我试图通过 ajax 调用将数组从 js 发送到 php。为了实现这一点,我首先使用 JSON.stringify() 将字符串转换为 json,然后在另一端使用 json_decode() 进行解码,但没有成功。
使用json_last_error()
我发现错误是4。
Js代码如下所示
var form_data = $(this).serialize();
form_data+='&extraITEMS='+JSON.stringify(extraITEMS);
var button_content = $(this).find('button[type=submit]');
form_data=form_data+'&landType='+landType;
button_content.html('Adding...'); //Loading button text
$.ajax({ //make ajax request to cart_process.php
url: "/cart/cart_process.php",
type: "POST",
dataType: "json", //expect json value from server
data: form_data
}).done(function (data) { //on Ajax success
$("#cart-info").html(data.items); //total items in cart-info element
button_content.html('Add to Cart'); //reset button text to original text
if ($(".shopping-cart-box").css("display") == "block") { //if cart box is still visible
$(".cart-box").trigger("click"); //trigger click to update the cart box.
}
})
我将数组附加到表单数据中。
在 php 端
foreach($_POST as $key => $value){
$new_product[$key] = filter_var($value, FILTER_SANITIZE_STRING); //create a new product array
}
//we need to get product name and price from database.
if(isset($new_product['extraITEMS']))
{
$newPrice=0;
$extraITEMS=json_decode($new_product['extraITEMS'],true);
var_export($extraITEMS);
error_log(stripslashes($new_product['extraITEMS']));
if(is_array($extraITEMS))
{
foreach($extraITEMS as $key=>$value)
{
if($value=='cherry'||$value=='chocolate chip'||$value=='butterscotch chip'||$value=='gems')
$newPrice+=50;
else if($value=='vanilla'||$value=='pineapple'||$value=='chocolate'||$value=='dark chocolate'||$value=='strawberry'||$value=='blackcurrant'||$value=='grape'||$value=='mango'||$value=='butterscotch')
$newPrice+=100;
}
}
unset($new_product['extraITEMS']);
}
这是 Firebug 控制台的快照。
如何解决这个问题?
更新:
var_export()
'"[\\"vanilla\\",\\"chocolate\\"]"'
上面的控制台日志显示在使用JSON.stringify()
之前的情况
在阵列上使用它后显示第二个。
最佳答案
我终于找到了解决方案,由于这段代码它不起作用
foreach($_POST as $key => $value){
$new_product[$key] = filter_var($value, FILTER_SANITIZE_STRING); //create a new product array
}
因为 json 解码在过滤器清理后的字符串上无法正常工作。
关于javascript - json最后一个错误返回4,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39460398/