jQuery AJAX使用多个数组数据参数

6

我已经成功地发布了一个数组,但我不知道如何在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 />";

这很好用。然而,当我尝试向data:字段添加第二个数组b_post时,它不起作用。我尝试了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);
    }
});            
1个回答

4
数据应该以这种方式封装。
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

这对我的目的非常有效,但我也想包括我的标准表单数据。最简单的方法是将 $(this).serialize() 添加到数据字段,但这是不允许的。我该如何还可以包括表单中其余的输入数据? - Kevin_TA
2
谢谢。我已经更新了我的问题,并提供了完整的解决方案。 - Kevin_TA
我们如何在Asp.net C#中解码这个?@Kevin_TA - Iman Estiri

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接