2017-08-16 48 views
0

我有一個看起來像這樣一個javascript數據文件:如何阻止將數組轉換爲對象的jQuery解析器?

data = { 
    items : [ 
    {name: 'ABC'}, 
    {name: 'CDF'} 
    ] 
} 

當我在這個數據傳遞到$.ajax(type: 'POST', data: data)轉換後的數據如下:

items[0][name]: 'ABC' 
items[1][name]: 'CDF' 

我的問題是服務器我送該數據以將其解釋爲:

items: { 
    '0' : { 'name' : 'ABC' }, 
    '1' : { 'name' : 'CDF' }  
} 

這裏的問題是,items被作爲一個對象,而不是處理n陣列! 那麼我如何確保$.ajaxitems編碼爲數組而不是對象?謝謝,麻煩您了!

+0

你也發送了什麼服務器?看起來不像js問題,並且jQuery不會將數組轉換爲對象 – baao

+0

查看轉換的數據。這是一個關於js的數組。但是,如果整數「0」是一個字符串「0」,它很容易被解釋爲一個對象。 – Yathi

+0

我查了文檔更多。將'traditional'設置爲true不會工作,因爲該對象只是作爲'object'發送。我想要將當前的實現與傳統的param序列化組合在一起。但目前可能不可能。 – Yathi

回答

0

你能稍後做一些轉換嗎?

data = { 
 
    items : [ 
 
    {name: 'ABC'}, 
 
    {name: 'CDF'} 
 
    ] 
 
} 
 

 
data.items=Object.keys(data.items).map(key=>data.items[key])

+0

我希望我可以改變服務器如何解釋數據。但我不能。我必須確保我發送的數據是正確的。 – Yathi

+0

我看到你的格式是x-www-form-urlencoded,那麼你需要序列化數據,試試$ .param(data) –

0

我相信

$.ajax({ 
    type: 'POST', 
    data: JSON.stringify(data), 
    contentType: 'application/json' 
}) 

應該做的伎倆

編輯補充的contentType作爲在評論中提到,我錯誤地離開了。

+0

我有'dataType:'json','帶'POST'調用。 – Yathi

+0

剛剛嘗試過。添加一個contentType也會在這個服務器上拋出一個錯誤。我認爲它希望數據的格式爲'application/x-www-form-urlencoded; charset = UTF-8'' – Yathi

+1

@Yathl那麼問題在於你的後端以及它如何解析請求數據。您需要使用您在後端使用的語言以及您如何嘗試訪問數據來更新您的問題。 –

相關問題