【问题标题】:Getting empty array in PHP while using $.ajax [duplicate]使用 $.ajax 时在 PHP 中获取空数组 [重复]
【发布时间】:2018-05-01 03:50:59
【问题描述】:

我有这个 jQuery $.ajax 脚本:

var data = JSON.stringify( selected_products );

$.ajax({ type: "POST", 
    url: "addtocart.php", 
    data: data, 
    dataType: 'application/json'
}); 

我将其发布到一个非常简单的 PHP 脚本中:

$selected_products = json_decode($_POST['data'], true);
print_r($selected_products);

这是我发送的示例;这是 Chrome DevTools 中的传出数据:

data:[{"id":"RECOLOURBALM","option":"Black","quantity":1},{"id":"TOWELS","quantity":1}]

但是,这是响应的控制台读数:

Array
(
)

我认为请求成功并且正在传递数据,但是响应都是空的。

我做错了什么?

【问题讨论】:

标签: javascript php jquery json ajax


【解决方案1】:
$selected_products = json_decode($_POST['data'], true);
echo $selected_products[0]['id'];
echo '<br>';
echo $_POST;
echo '<br>';
var_dump($_POST);

在您的帖子中添加数据

您现在得到 null 这是因为那里给出了 stringify。请像这样更改代码。它肯定会工作。

var data=[{"id":"RECOLOURBALM","option":"Bordeaux","quantity":1},{"id":"TOWELS","quantity‌​":1}];
//data = JSON.stringify(data);
$.ajax({ 
    type: "POST", 
    url: "addtocart.php", 
    data: {'data':data}, 
    success:function(returndata){
        console.log(returndata);
    }
});

删除字符串化。

【讨论】:

  • 感谢您的回复!我现在的反应是:

    NULL
  • print $selected_products 删除所有其他行..输出是什么
  • 还在ajax中添加一个数据类型为json
  • 用于打印($selected_products);我没有得到回应?
  • 将 contentType: 'application/json' 添加到 ajax.. 打印 $_post 变量时你得到了什么
【解决方案2】:

如果Content-Type设置为application/json,则必须按如下方式接收数据。

$data = json_decode(file_get_contents('php://input'), true);

$_POST会收到request的数据,有Content-Type:x-www-form-urlencoded(Form Data)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-22
    • 2014-06-01
    • 1970-01-01
    • 2016-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多