[英]How to pass and retrieve JSON function as data via ajax to PHP?
我正在购物车上。 现在我需要将添加到购物车中的对象数组传递给php页面,该对象存储在localStorage中,以便插入数据库。
console.log(localStorage.getItem("shoppingCart"));
上面注销,以下内容:
[{"name":"Banana","price":1.33,"count":5},{"name":"Apple","price":1.22,"count":5},{"name":"Shoe","price":22.33,"count":1}]
现在,我正在尝试将此JSON字符串传递到一个名为Submit_cart.php的php页面,并正确地在php页面中检索该字符串,我该怎么做? 目前,它正在发送和接收空数据。
$("#submit-cart").click(function(event){
console.log("****TEST LOG ***");
console.log(localStorage.getItem("shoppingCart"));
var data = localStorage.getItem("shoppingCart");
$.ajax({
type: "POST",
dataType: "json",
url: "submit_cart.php",
data: data,
success: function(data) {
console.log("******success******");
console.log(data);//this logs []
}
});
});
在submit_cart.php中
<?php
$return = $_POST;
$return["json"] = json_encode($return);
$data = json_decode($return["json"], true);
echo json_encode($return["json"]);
?>
编辑为建议的答案,它现在可以工作:
$("#submit-cart").click(function(event){
console.log("****TEST LOG ***");
console.log(localStorage.getItem("shoppingCart"));
var data = localStorage.getItem("shoppingCart");
$.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "submit_cart.php",
data: data,
success: function(data) {
console.log("******success******");
console.log(data);//this logs []
}
});
});
在submit_cart.php中
<?php
$_POST = json_decode(file_get_contents('php://input'),true);
print_r($_POST);
?>
在ajax请求上,将内容类型设置为json,在php端,从php:// input读取json
$.ajax({
type: "POST",
dataType: "json",
contentType: 'application/json',
url: "submit_cart.php",
data: data,
success: function(data) {
console.log("******success******");
console.log(data);//this logs []
}
});
$_POST = json_decode(file_get_contents('php://input'),true);
// then use post as usual
如果要从$_POST
获取值,两者都是错误的。 您需要将键值对发送到服务器,然后可以通过这些键在$_POST
访问它们。
要将所有内容发送到1个变量中,您可以执行以下操作:
...
var data = {json: localStorage.getItem("shoppingCart")};
...
请注意,发送对象始终是一个好主意,因为当您使用对象时,jQuery会正确编码数据。
然后,您可以像这样在php中获取它:
// you only need this, no additional encoding / decoding
$data = json_decode($_POST["json"], true);
正如您在问题console.log(localStorage.getItem("shoppingCart"));
提到的那样,您的数据已经被编码console.log(localStorage.getItem("shoppingCart"));
输出是
[{"name":"Banana","price":1.33,"count":5},{"name":"Apple","price":1.22,"count":5},{"name":"Shoe","price":22.33,"count":1}]
所以在你的ajax请求中
data: { json_data:data} ,
在这种情况下,数据作为对象工作,并且很容易获取值。
并在php文件中
echo $_POST["json_data"];
您不在此处向目标页面发送任何数据。在ajax内部,使用data:参数发送数据。然后在ajax外部使用.done()函数代替使用success函数,在结果处理方面,done函数更好。您可以使用开发人员工具网络检查数据是否正在传输。显示所有请求和响应数据。希望可以解决此问题。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.