4

我刚刚将我的 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>for arrayParam(并导致代码库周围的一些 JSON 问题)。有没有办法在不恢复到 1.3.2 或重新编程我所有的控制器的情况下解决这个问题?

谢谢

4

1 回答 1

9

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

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

有关更多信息,请参阅jquery 参数

这是您的解决方法:

jQuery.ajaxSettings.traditional = true;
于 2010-04-08T21:27:10.420 回答