首页 > 解决方案 > $.Ajax 将字符串作为数组发布到 PHP 脚本

问题描述

我试图让 Ajax 将一组字符串发布到我的 PHP 脚本,但 POST 的 var_dump 导致数组{0}。如果我尝试 json_decode Post 我得到 json_decode 期望参数 1 作为字符串但给定数组。如果我控制台记录 stringify 变量,我会得到我想要在控制台中显示的结果。我似乎无法让 Ajax 将该字符串发布到 PHP 脚本,代码如下

<script>
    $(document).ready(function(){
    $('button[id=add]').click(function(event){
    event.preventDefault();

  var form_data = { 
      submit: $('input[name=submit]').val(),
      id: $('input[name=id]').val(),
      name: $('input[name=name]').val(),
      price: $('input[name=price]').val(),
      quantity: $('input[name=quantity]').val()
      };

   var json_data = JSON.stringify(form_data);

  $.ajax({
     type: 'POST', 
     url: 'test.php', 
     dataType: 'json', 
     data: json_data,          
     success: function(data){
      console.log(data)
        }
       });
    });
});
</script>  

标签: arraysajaxstringpost

解决方案


$_POST仅在您发送或x-www-form-urlencoded时填充multipart/form-data。您正在发送 JSON。不要发送 JSON

$(document).ready(function(){
    $('button[id=add]').click(function(event){
    event.preventDefault();

  var form_data = { 
      submit: $('input[name=submit]').val(),
      id: $('input[name=id]').val(),
      name: $('input[name=name]').val(),
      price: $('input[name=price]').val(),
      quantity: $('input[name=quantity]').val()
      };


  $.ajax({
     type: 'POST', 
     url: 'test.php', 
     dataType: 'json', 
     data: form_data ,          
     success: function(data){
      console.log(data)
        }
       });
    });
});

推荐阅读