2011-05-04 33 views
7

我正在使用jQuery一個簡單的AJAX後的名稱,偉大工程:AJAX後用jQuery改變數組參數

var parameters = {firstName: 'John', lastName: 'Smith'}; 
$.post('http://api.example.com/rest', parameters, function(data) { 
    alert('Response: ' + data.someResult); 
}); 

然而,當我添加一個數組來像這樣的參數:

var parameters = {firstName: 'John', lastName: 'Smith', children: ['Susy', 'Billy']}; 

那麼問題是參數名稱children被改爲children[](它實際上URL編碼到children%5B%5D)發佈到服務器時。我無法更改服務器以查找名稱爲children[]的參數,我該怎麼辦?如何以名稱children發佈多個值?爲什麼jQuery改變我的參數名稱?

回答

6

我相信你需要啓用traditional參數編碼。

http://api.jquery.com/jQuery.ajax/http://api.jquery.com/jQuery.param

由於$.post沒有爲這個特定的選項你要麼需要恢復到$.ajax或使用全局設置jQuery.ajaxSettings.traditional = true

+0

好的,謝謝!我擔心設置一個像這樣的全局值可能會干擾我網頁上的其他第三方腳本?所以我只使用$ .ajax機制。 – 2011-05-04 19:48:59

+0

你也可以調用'jQuery.param(parameters,true)',在當前傳遞原始參數的地方傳遞結果:** [jQuery.param()](http://api.jquery.com/jQuery。 PARAM /)** – hippietrail 2011-12-21 10:57:29