我刚刚将我的jQuery从1.3.2升级到1.4.2,我认为它给了我一些问题。我有一个$.post()
函数调用一个控制器方法,并传递一些我格式化的数据:
$.post(url, { arrayParam: myArray, param2: false }, someCallback, 'html');
在Firebug中,POST说1.3.2中的参数如下所示:
arrayParam: 100
arrayParam: 101 (etc..)
但对于1.4.2,它们看起来像这样:
arrayParam[]: 100
这打破了我的控制器,它期待List<Int32>
arrayParam
(并且导致代码库周围出现一些JSON问题)。有没有办法绕过这个没有恢复到1.3.2或重新编程我的所有控制器?
由于
答案 0 :(得分:9)
从jQuery 1.4开始,$ .param()方法递归地序列化深层对象,以适应现代脚本语言和框架,如PHP和Ruby on Rails。您可以通过设置jQuery.ajaxSettings.traditional = true;
来全局禁用此功能。
jQuery的ajax方法对传入的数据使用$ .param()。
有关详细信息,请参阅jquery param。
以下是您的修复:
jQuery.ajaxSettings.traditional = true;