我试图传递和返回一个PHP脚本的数组,我已经测试了json_ecode部分及其工作,但我无法在php端获得json_decode .
使用Javascript
scid_list = [];
$('.filter_on').each(function(){scid_list.push($(this).data("scid"));});
$.ajax({
type: "POST",
dataType: "json",
data: {scid_list:scid_list},
url: "/scripts/products_filter.php",
success: function(data){
alert(data.join('\n'));
}
});
PHP
<?php
$scid_list=(json_decode($_POST['scid_list'], true));
echo json_encode($scid_list);
exit();
?>
我也尝试在解码时省略真实
$scid_list=(json_decode($_POST['scid_list']);
而根本不解码它
$scid_list=$_POST['scid_list'];
我不确定我错过了什么 . 我也尝试过序列化数据,但如果你将dataType指定为json,我就不必阅读,我尝试使用stripslashes
任何帮助表示赞赏!
干杯
2 回答
我认为问题在于,即使您在Ajax调用中指定了数据,您发送的数据也不是json . 因为它只是你得到的二维数组,为什么不在你的JS中使用Array.join然后再做帖子:
这会把它变成逗号分隔的字符串 . 例如
您也可以简化Ajax调用:
然后在PHP文件中,您可以使用explode()将其重新转换为数组:
希望一切都有道理 .
您的
dataType
参数指定您希望JSON数据作为响应,但这并不意味着您将数据作为JSON发送 . 在你的情况下,你发送一个数组,因此在PHP而不是:你应该简单地使用:
总之,对于给定的HTML:
和脚本:
PHP部分是: