好认真在这里挣扎.我试图通过ajax向
PHP发送多维数组时遇到一些问题.这是我一直在尝试的:
为了简化而不是复制粘贴代码墙:
peoplearray[0] = [name] => 'john' [age] => '28' [sex] => 'Male' peoplearray[1] = [name] => 'julie' [age] => '20' [sex] => 'Female' main_array['item'] = 'x'; main_array['something'] = 'x'; main_array['another'] = 'x';
我希望通过帖子将其发送到PHP.我想我也可以将它们加在一起,因为我是多维的,因此:
main_array['peoplearray'] = peoplearray;
现在要做ajax:
// var data = JSON.stringify(main_array); var send = $.ajax({ type: "POST",cache: false,url: "theurl",data: {data:main_array} //I do change this `main_array` when using the above stringify! }); send.done(function(msg) { console.log(msg); })
在PHP中,我现在正在执行以下操作:
$data= $_POST['data']; print_r($data);
在萤火虫:(一个空字符串)
当我有var data = JSON.stringify(main_array);取消注释我得到以下内容:[] [
如果我添加$data = json_decode($_ POST [‘data’]);我得到的PHP:
Array ( )
基本上我认识的main_array不需要是一个数组,所以我可以得到那些东西没有问题,但我需要做的是让人们发布,以便我可以做一些foreach等…用它在PHP中.任何帮助将不胜感激我相信我只是愚蠢!
编辑:这背后的原因是peoplearray可能有0或100个条目,所以我只需要将它转换为PHP,这样我就可以预先做它来进行数据库输入.如果有一个更好的方法,我会非常感激听到它,因为我仍然是新手.
编辑:感谢Nicola的回答一切正常,除了mainarry.peoplearray的重要部分 – 它没有出现在return console.log中,我无法在PHP中访问它.任何有关此问题的解决方案或我是否必须将foreach智能放在javascript中并单独发送所有内容?
解决方法
首先,main_array不是一个数组而是一个对象,因为在javascript中没有关联数组,因此
main_array['peoplearray'] = peoplearray;
相当于
main_array.peoplearray = peoplearray;
你应该像这样声明main_array
var main_array = {};
然后尝试改变你的功能:
var send = $.ajax({ type: "POST",dataType: "json",data: {data:main_array} });
和服务器端
header('Content-type: application/json'); $data= $_POST['data']; echo json_encode($data);