6

単一のアレイを正常に投稿しましたが、AJAX投稿で複数のアレイを送信する方法がわかりません。1つの配列のコードは次のとおりです。

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ただし、フィールドに2番目の配列を追加しようとすると、data:機能しません。私はそれのいくつかのバリエーションを試しdata: {a_post, b_post},ましたが、正しく動作させることができません。submitOrder.phpその間、データのアラートを表示するのではなく、投稿後にどのようにロードしますか?

アップデート

Nicolasの提案を使用して、データフィールドを次のように変更して機能させることができました。

data: {'array1':JSON.stringify(a), 'array2':JSON.stringify(b)},

ただし、ユーザーが入力した残りのフォームデータも追加する必要があります。このデータはで取得できますが$(this).serialize()、フィールドに追加しようとするとdata機能しません。このデータを上記の行に追加するにはどうすればよいですか?

ありがとう。

解決

(ニコラスの助けを借りて)私が当初望んでいたように機能することになったもの:

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);
    }
});            
4

1 に答える 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
于 2012-06-04T19:16:07.450 に答える