我已经成功发布了一个数组,但我无法弄清楚如何在AJAX帖子中发送多个数组。这是我的一个数组的代码:
var a = new Array();
// fill array
var a_post = {};
a_post['array1[]'] = a;
$.ajax({
url: "submitOrder.php",
data: a_post,
type: 'post',
success: function(data) {
alert(data);
}
});
在submitOrder.php中我有:
$array1= $_POST['array1'];
foreach ($array1 as $a => $b)
echo "$array1[$a] <br />";
这很好用。但是,当我尝试将第二个数组b_post
添加到data:
字段时,它不起作用。我尝试了data: {a_post, b_post},
及其中的一些变体,但我无法让它正常工作。在我这样做的时候,如何在发布后加载submitOrder.php
而不是显示数据警报?
更新
使用Nicolas的建议,我将其用于将数据字段更改为:
data: {'array1':JSON.stringify(a), 'array2':JSON.stringify(b)},
但是,我还需要添加用户输入的其余表单数据。我可以使用$(this).serialize()
获取此数据,但如果我尝试将其添加到data
字段,则无效。如何将此数据添加到上面的行?
感谢。
解
最终以我最初希望的方式工作(借助Nicolas的帮助):
var formData = $(this).serializeArray();
var a_string = JSON.stringify(a);
formData.push({name: 'array1', value: a_string});
var b_string = JSON.stringify(b);
formData.push({name: 'array2', value: b_string});
$.ajax({
url: "submitOrder.php",
data: formData,
type: 'post',
success: function(data) {
alert(data);
}
});
答案 0 :(得分:3)
数据应以这种方式封装
data: {'first_array':JSON.stringify(array1),'second_array':JSON.stringify(array2)}
然后在PHP中:
$array1 = json_decode($_POST['first_array']);
$array2 = json_decode($_POST['second_array']);
您也可以添加其余输入。
data: {'first_array':JSON.stringify(array1),'second_array':JSON.stringify(array2),'input1':$(input[name="input1"]).val()}
只需重复您要发送的所有输入。
'input1':$(input[name="input1"]).val(),'input2':$(input[name="input2"]).val(),... etc