【发布时间】:2012-04-14 07:06:12
【问题描述】:
好的,在这里严重挣扎。我在尝试通过 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';
我想通过post 将它发送到 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);
在萤火虫中:(an empty string)
当我取消注释 var data = JSON.stringify(main_array); 时,我得到以下信息:[][
如果我将 $data = json_decode($_POST['data']); 添加到我得到的 php 中:
Array ( )
基本上main_array 我意识到不需要是一个数组,所以我可以毫无问题地得到这些东西,但我需要做的是让peoplearray 结束,这样我就可以做一些foreach 等...在 php.ini 中使用它。任何帮助将不胜感激,我确信我只是愚蠢!
编辑:这背后的原因是 peoplearray 可能有 0 或 100 个条目,所以我只需要把它放到 php 中,这样我就可以 foreach 它来做数据库输入。如果有更好的方法,我将不胜感激,因为我对此还是很陌生。
编辑:感谢 Nicola 的回答,一切正常,除了 mainarry.peoplearray 的重要部分 - 它没有出现在返回 console.log 中,我无法在 PHP 中访问它。有任何解决方案,还是我必须将 foreach 智能放入 javascript 中,然后单独发送所有内容?
【问题讨论】:
-
你能把发出ajax请求的整个JS函数贴出来吗?如果您使用 console.log(main_array) (在调用 $.ajax 之前)它在 firebug 中显示什么?
-
我在 JSON.stringify 之前使用 console.log(main_array) 得到了正确的结果。在 JSON.stringify 之后我得到:[]。就我目前正在做的所有 ajax 而言。事实上,它是唯一真正的复制和粘贴!只是为了达到这一点,我一直在 Chrome 中调试数组,这不是我刚刚发现的。
标签: php javascript arrays jquery