在使用$.ajax时,在PHP中得到空数组。

22 浏览
0 Comments

在使用$.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我做错了什么?

0
0 Comments

如果在使用$.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是什么类型,都能正确地接收到数据。

0
0 Comments

在使用$.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);

我们可以在聊天室中继续讨论

0