2011-11-17 66 views
2

我有一個使用的jQuery 1.3.2 ASP.NET MVC應用程序。更新jQuery的版本已經打​​破了阿賈克斯負載

在幾個頁面有一個網格,使您可以選擇多個項目,然後調用.load加載細節的項目。

this.$container.load(this.url, data, function() { 
    // Show results 
}); 

data含有命名s包含所選擇的ID的數組。作爲

s 2 
s 1 

其中被送往

public ActionResult SomeAction(object[] s) 

,一切偉大的工作

s = [ "2", "1" ]

使用jQuery 1.3.2,data將被公佈。

我試過因爲jQuery是張貼data像這樣的jQuery庫更改爲最新版本(1.5.1),現在我的控制器不接受的s值:

s[] 2 
s[] 1 

我是否需要爲了分配一個索引值的控制器,用以接收所述值(s[1], s[2])?我是否需要更改控制器操作的簽名或數組的生成方式?眼下生成數據的JavaScript簡直是

var s = new Array(); 
for (var id in this._selected) { 
    // Some checks 
    s.push(id); 
} 

回答

2

如果在1.3.2的工作,你應該能夠通過設置jQuery.ajaxSettings.traditional = true恢復到原來的行爲。這是jQuery 1.4的一個變化,這個設置允許向後兼容。

詳情請參閱the manual entry for $.param

使用您的示例數據:

var data = {s: ["2", "1"]}; 

// jQuery 1.7 
$.param(data); // "s%5B%5D=2&s%5B%5D=1" 
jQuery.ajaxSettings.traditional = true; 
$.param(data); // "s=2&s=1" 

// jQuery 1.3.2 
$.param(data); // "s=2&s=1" 
+0

謝謝,這是有益的,但如果我想支持做事的新方法,是可以修改我有什麼或者我需要依靠傳統的環境? – Brandon

+0

@Brandon AFAIK(並非MVC專家),這是「辦法」來做到這一點。 – lonesomeday