jQuery 1.4.2 JSON 格式打破了 1.3.2 中过去的工作方式
我刚刚将 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
这破坏了我的控制器,它期待 arrayParam
的 List
(并导致代码库周围出现一些 JSON 问题)。有没有办法解决这个问题,而不需要恢复到 1.3.2 或重新编程我的所有控制器?
谢谢
I just upgraded my jQuery from 1.3.2 to 1.4.2, and I think it's giving me some issues. I have a $.post()
function that calls a controller method and passes along some data that I format like so:
$.post(url, { arrayParam: myArray, param2: false }, someCallback, 'html');
In Firebug, the POST says the parameters in 1.3.2 look like this:
arrayParam: 100
arrayParam: 101 (etc..)
But for 1.4.2 they look like this:
arrayParam[]: 100
This is breaking my controller which is expecting a List<Int32>
for arrayParam
(and is causing some JSON issues around the codebase). Is there a way around this without either reverting back to 1.3.2 or reprogramming all of my controllers??
Thanks
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
从 jQuery 1.4 开始,$.param() 方法递归地序列化深层对象,以适应现代脚本语言和框架,例如 PHP 和 Ruby on Rails。您可以通过设置 jQuery.ajaxSettings.traditional = true; 来全局禁用此功能。
jQuery 的 ajax 方法对传入的数据使用 $.param()。
请参阅 jquery param 了解更多信息。
这是你的修复:
As of jQuery 1.4, the $.param() method serializes deep objects recursively to accommodate modern scripting languages and frameworks such as PHP and Ruby on Rails. You can disable this functionality globally by setting
jQuery.ajaxSettings.traditional = true;
.jQuery's ajax methods use $.param() on the data that is passed in.
See jquery param for more info.
Here is your fix: