使用 $.ajax 时在 PHP 中获取空数组 [重复]
Posted
技术标签:
【中文标题】使用 $.ajax 时在 PHP 中获取空数组 [重复]【英文标题】:Getting empty array in PHP while using $.ajax [duplicate] 【发布时间】: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
(
)
我认为请求成功并且正在传递数据,但是响应都是空的。
我做错了什么?
【问题讨论】:
这可能对***.com/questions/22851766/…有帮助 ***.com/questions/18866571/receive-json-post-with-php 这个问题出现了很多,之前已经回答过很多次了。检查上面的链接之一 @darragh enright 问题出在 stringify.. 【参考方案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)
【讨论】:
以上是关于使用 $.ajax 时在 PHP 中获取空数组 [重复]的主要内容,如果未能解决你的问题,请参考以下文章