jQuery 1.4.2 JSON格式打破了以前在1.3.2中工作的内容

Jas*_*son 4 asp.net-mvc jquery jquery-1.4

我刚刚将我的jQuery从1.3.2升级到1.4.2,我认为它给了我一些问题.我有一个$.post()调用控制器方法的函数,并传递一些我格式化的数据:

$.post(url, { arrayParam: myArray, param2: false }, someCallback, 'html');
Run Code Online (Sandbox Code Playgroud)

在Firebug中,POST说1.3.2中的参数如下所示:

arrayParam: 100
arrayParam: 101 (etc..)
Run Code Online (Sandbox Code Playgroud)

但对于1.4.2,它们看起来像这样:

arrayParam[]: 100
Run Code Online (Sandbox Code Playgroud)

这打破了我的控制器,它期待一个List<Int32>for arrayParam(并在代码库周围引起一些JSON问题).有没有办法绕过这个没有恢复到1.3.2或重新编程我的所有控制器?

谢谢

Dav*_*och 9

从jQuery 1.4开始,$ .param()方法递归地序列化深层对象,以适应现代脚本语言和框架,如PHP和Ruby on Rails.您可以通过设置全局禁用此功能jQuery.ajaxSettings.traditional = true;.

jQuery的ajax方法对传入的数据使用$ .param().

有关详细信息,请参阅jquery param.

这是你的修复:

jQuery.ajaxSettings.traditional = true;
Run Code Online (Sandbox Code Playgroud)