具有多个数组数据参数的jQuery AJAX

Kev*_*_TA 6 javascript ajax jquery

我已经成功地发布了一个数组,但是我不知道如何在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);
    }
});
Run Code Online (Sandbox Code Playgroud)

在submitOrder.php中,我有:

$array1= $_POST['array1'];

foreach ($array1 as $a => $b)
echo "$array1[$a] <br />";
Run Code Online (Sandbox Code Playgroud)

这很好。但是,当我尝试b_post向该data:字段添加第二个数组时,它不起作用。我尝试data: {a_post, b_post},了一下,但有一些变化,但是我无法使其正常工作。在查看时,如何submitOrder.php在发布后加载而不是显示数据警报?

更新

使用Nicolas的建议,我得到了这个,可以将数据字段更改为:

data: {'array1':JSON.stringify(a), 'array2':JSON.stringify(b)},
Run Code Online (Sandbox Code Playgroud)

但是,我还需要添加用户输入的其余表单数据。我可以使用此数据,$(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);
    }
});            
Run Code Online (Sandbox Code Playgroud)

Nic*_*res 4

数据应该这样封装

data: {'first_array':JSON.stringify(array1),'second_array':JSON.stringify(array2)}
Run Code Online (Sandbox Code Playgroud)

然后在 PHP 中:

$array1 = json_decode($_POST['first_array']);
$array2 = json_decode($_POST['second_array']);
Run Code Online (Sandbox Code Playgroud)

您也可以添加其余的输入。

data: {'first_array':JSON.stringify(array1),'second_array':JSON.stringify(array2),'input1':$(input[name="input1"]).val()}
Run Code Online (Sandbox Code Playgroud)

只需重复您要发送的所有输入即可。

'input1':$(input[name="input1"]).val(),'input2':$(input[name="input2"]).val(),... etc
Run Code Online (Sandbox Code Playgroud)

  • 谢谢。我已经用有效的完整解决方案更新了我的问题。 (2认同)