2016-06-01 32 views
1

是否可以告訴jQuery /一個AJAX調用以特定的方式格式化查詢字符串參數,而不僅僅是編寫我自己的序列化程序?是否可以自定義jQuery如何序列化AJAX url參數?

我有一個jQuery AJAX調用,並且正在使含有URL參數

var params = {name: 'somename', favColors: ['red','blue']};

檢查AJAX調用$.get("/Controller/Action/", params)一個目的示出了URL PARAM串是?name=somename&favColors[]=red&favColors[]=blue

目標URL期望查詢參數不包含重複數組值的[],例如?name=somename&favColors=red&favColors=blue

謝謝!

回答

0

您可以使用jQuery.param()和第2參數traditional,將結果提供給$.get()

var params = {name: 'somename', favColors: ['red','blue']}; 

$.get("/Controller/Action/", $.param(params, true)) 

該參數被描述爲:

一個布爾指示是否執行傳統的「淺」序列化。

在這種情況下:

console.log($.param(params, true)); 
// "name=somename&favColors=red&favColors=blue" 
+0

從未停下來弄清楚什麼'traditional'是,我想,因爲我從來沒有需要它...讓我的答案都看傻了,現在 – charlietfl

+0

謝謝,這是正是我之後的解決方案! – AndrewP

0

$.get()也接受查詢字符串作爲第二個參數而不是對象。您可以使用它來追加自定義生成的查詢字符串。 ?會附加給你,所以你不需要放一個。

0

jQuery使用$.param()來對來自對象的數據字符串進行編碼。您可以自己使用它並刪除編碼爲%5B%5D[]

正如在其他的答案串指出可以使用,以及對象數據參數

喜歡的東西:

var reg =/%5B%5D/g; 
var params= $.param({name: 'somename', favColors: ['red','blue']}).replace(reg,''); 
$.get("/Controller/Action/", params) 

在瀏覽器控制檯只測試

相關問題