在使用$.ajax时,在PHP中得到空数组。
在使用$.ajax时,在PHP中得到空数组。
我有这个jQuery $.ajax脚本:\n
var data = JSON.stringify(selected_products); $.ajax({ type: "POST", url: "addtocart.php", data: data, dataType: 'application/json' });
\n我将它发送到一个非常简单的PHP脚本:\n
$selected_products = json_decode($_POST['data'], true); print_r($selected_products);
\n这是我发送的一个示例;这是Chrome DevTools中的传出数据:\ndata:[{\"id\":\"RECOLOURBALM\",\"option\":\"Black\",\"quantity\":1},{\"id\":\"TOWELS\",\"quantity\":1}]\n
\n然而,这是响应的控制台输出:\n
Array ( )
\n我认为请求成功并传递了数据,但响应都是空的。\n我做错了什么?
如果在使用$.ajax时出现了在PHP中得到空数组的问题,可能是由于以下原因:
原因:
1. 请求的Content-Type被设置为application/json。
2. PHP使用$_POST接收请求数据,而请求的Content-Type是x-www-form-urlencoded。
解决方法:
1. 如果Content-Type被设置为application/json,可以使用下面的代码来接收数据:
$data = json_decode(file_get_contents('php://input'), true);
2. 如果使用的是x-www-form-urlencoded格式的请求数据,可以继续使用$_POST来接收数据。
这样,无论请求的Content-Type是什么类型,都能正确地接收到数据。
在使用$.ajax时得到一个空数组的问题是因为在代码中使用了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); } });
去掉stringify方法。
感谢回复!我的响应现在是: <br><br>NULL
只保留print $selected_products这一行代码...结果是什么?
还在ajax中添加一个datatype参数,设置为json类型。
对于print($selected_products);我没有得到任何响应?
在ajax中添加contentType: 'application/json',检查打印$_POST变量是否有结果。
print ($_POST)没有给我任何结果。还有,如何修改快捷方式$.post的数据类型?我已经更新了op。
使用以下代码替代$.post:$.ajax({type: "POST",url: url,data: data,success: success,dataType: dataType});
好的,我已经使用你提供的代码更新了op,但是我仍然没有得到任何东西?
你可以尝试这个$selected_product=json_decode(file_get_contents('php://input'), true);
我们可以在聊天室中继续讨论。