好吧,在这里认真挣扎。我在尝试通过 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);
在 Firebug 中:(空字符串)
当我对 var data = JSON.stringify(main_array);
取消注释时,我得到以下内容:[][
如果我将 $data = json_decode($_POST['data']);
添加到我得到的 php 中:
Array ( )
基本上 main_array
我意识到不需要是一个数组,所以我可以毫无问题地处理这些东西,但我需要做的是让 peoplearray
结束这样我就可以用它在 php 中做一些 foreach
等等。任何帮助将不胜感激我确信我只是愚蠢!
编辑:这背后的原因是 peoplearray
可以有 0 或 100 个条目,所以我只需要将它放到 php 中,这样我就可以 foreach
它来执行 DB输入。如果有更好的方法,我将不胜感激,因为我对此还是很陌生。
编辑:多亏了 Nicola 的回答,除了重要部分 mainarry.peoplearray 之外,一切都很好 - 它没有出现在返回 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",
cache: false,
url: "theurl",
data: {data:main_array}
});
和服务器端
header('Content-type: application/json');
$data= $_POST['data'];
echo json_encode($data);
关于php - 通过 ajax 到 PHP 的多维数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9945640/