2012-06-04 49 views
3

我已經成功發佈了一個數組,但我無法弄清楚如何在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); 
    } 
}); 

而在submitOrder.php我:

$array1= $_POST['array1']; 

foreach ($array1 as $a => $b) 
echo "$array1[$a] <br />"; 

這工作得很好。但是,當我嘗試將第二個數組b_post添加到data:字段時,它不起作用。我試過data: {a_post, b_post},及其中的一些變化,但我無法讓它正常工作。雖然我在這,但是如何在發佈後加載submitOrder.php而不是顯示數據警報?

UPDATE

使用Nicolas的建議下,我得到這個工作改變數據字段:

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

不過,我還需要補充一點,一直表單數據的其餘部分由用戶輸入。我可以通過$(this).serialize()獲得這些數據,但是如果我嘗試將其添加到data字段中,則不起作用。我如何將這些數據添加到上面的行?

謝謝。

SOLUTION

什麼結束了工作,我原本希望爲的方式(與尼古拉斯的幫助下):

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

回答

2

數據應微膠囊這樣

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 
+0

這很適合我的目的,但我也想包括我的標準表單數據。最簡單的方法是將'$(this).serialize()'添加到數據字段,但這是不允許的。我怎麼能也包含表單中的其他輸入數據? –

+0

添加了您向 –

+2

詢問的問題。謝謝。我已經用完整的解決方案更新了我的問題。 –