2015-10-13 99 views
0

我想發送一個數組作爲json的ajax請求,但由於某種原因,如果我建立一個數據的數組我想發送並傳遞到數據屬性,這是不同的,如果我手動輸入我想要的。這裏有一個例子:作爲數組發送Ajax數據不同於發送爲手動字符串

作品:

$.ajax({ 
    method: "PUT", 
    url: restURL, 
    data: { 
    id: 1, 
    number: 99 
    } 
}); 

什麼在Chrome開發者控制檯中的表單數據看起來像網絡請求:

id:1 
number:99 

不起作用:

var array = []; 
array.push({ 
    id: 1, 
    number: 99 
}); 

$.ajax({ 
    method: "PUT", 
    url: restURL, 
    dataType: "json", 
    data: JSON.stringify(array) 
}) 

是什麼在Chrome瀏覽器開發控制檯中的表單數據看起來像網絡請求:

[{"id":1,"number":99}]: 

我需要的數據在開發者控制檯匹配的內容第一個輸出,因爲這是我們的服務器預計,但我無法弄清楚如何讓這個與預先構建數組一起工作。任何幫助將不勝感激。

+1

在第一個例子,你不發送任何陣列。它只是一個對象。數據陣列服務器上預期的格式是什麼? –

+0

@OrestHera第一個例子中的格式 – David

回答

1

在第一個示例中,您正在發送窗體編碼鍵/值對。

在第二個你發送的是一個字符串......恰巧是json ......但它只是一個沒有密鑰的值。

嘗試:

data: {myArray: array} 

然後使用該密鑰myArray

1

正如@charlietfl說,你的問題是,你是數據設置到陣列其中jquery documentation 說,在服務器接收數據參數必須是對象

一個解決辦法可能是讓你的陣列作爲數據對象的屬性, 例如:

var arr = []; 
arr.push({ 
    id: 1, 
    number: 99 
}); 

var myObj = { data: arr}; 

$.ajax({ 
    method: "PUT", 
    url: restURL, 
    data: myObj 
}); 

希望這有助於

相關問題