我正在购物车上工作。现在我需要将添加到购物车中的对象数组传递给php页面,以便插入到数据库中。
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);
?>
答案 0 :(得分:1)
在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
答案 1 :(得分:1)
如果您想从$_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);
答案 2 :(得分:0)
您的数据已按照您在问题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"];
答案 3 :(得分:0)
你不是在这里向目标页面发送任何数据。在ajax中发送数据与data:parameter.Then而不是使用success函数使用ajax之外的.done()函数。完成函数在结果处理。您可以使用开发人员工具网络检查您的数据是否正在传输。显示所有请求和响应数据。希望这可以解决问题。