我正在尝试将数组从Javascript发送到PHP。
function wishlist_save(arr){
$.ajax({
type: "POST",
url: "from.php?type=customers",
data: {info: JSON.stringify(arr) },
success: function(){
}
});
}
数组以这种方式设置:
function getAll(){
var info = [];
var i = 0;
$(".desc").each(function(){
var value = $(this).text();
var qtt = $(this).attr('alt');
info[i] = [];
info[i]['desc'] = value;
info[i]['qtt'] = qtt;
i++;
});
return info;
}
如果我在javascript中输出(使用console.log(getAll())
)数组,我会在Chrome控制台中获得正确的值:
[Array[0], Array[0], Array[0]]
->0: Array[0]
desc: 'John'
alt: 'Good'
->1: Array[0]
desc: 'Obama'
alt: 'Great'
但在PHP(from.php?type=customers
)中,我无法弄清楚如何获取这些值。
$arr = json_decode($_POST['info']);
ChromePhp::log($arr[0]['desc']); // returns null
我做错了什么?
解决即可。
问题出现在JSON.stringify(arr)
上,这在某种程度上没有将数组正确发送给PHP。
所以,我需要的是调整检索数组的函数:
var info = [];
info.push({desc: value, qtt: qtt });
除此之外,AJAX现在只需要:
data: {info: arr },
和PHP: