在JQuery 1.4.2 .ajax中转换JSON错误

时间:2010-03-24 17:58:59

标签: jquery

我的代码在JQuery 1.3.2中运行良好,但在1.4.2中它似乎被打破了。它应该在帖子中得到的是这样的:

?pks=108;pks=107

我现在得到的是:

?pks[]=108;pks[]=107;

当我跟踪此代码时,JSON对象似乎没有问题,直到它进入.ajax。收到回复后,Firebug显示帖子是:

Parameters  application/x-www-form-urlencoded
pks[]   108
pks[]   107
Source
pks%5B%5D=108&pks%5B%5D=107

这不是我在JQuery 1.3.2上得到的。那些额外的牙齿来自哪里?

1 个答案:

答案 0 :(得分:8)

嵌套参数序列化的JQuery 1.4 released a change。从他们的网站:

  

jQuery 1.4在jQuery.param中添加了对嵌套param序列化的支持,使用了PHP推广的方法,并且得到了Ruby on Rails的支持。例如,{foo:[“bar”,“baz”]}将被序列化为“foo [] = bar& foo [] = baz”。

     

在jQuery 1.3中,{foo:[“bar”,“baz”]}被序列化为“foo = bar& foo = baz”。但是,使用这种方法无法对单元素阵列进行编码。如果您需要旧的行为,可以通过设置传统的Ajax设置(全局通过jQuery.ajaxSettings.traditional或通过传统标志逐个案例)将其重新打开。

[]括号通常用于表示一个数组,这似乎是他们试图在这里使我更明显的东西(因为你的查询字符串可以被读取,看到一个值是正在被另一方覆盖。

修改: 我想你可能会按照他们的建议使用:

// Globally set it to use the old 1.3.* way of doing things.
jQuery.ajaxSettings.traditional = true;

// Enables the 1.3.* way for a single Ajax request only
$.ajax({ data: stuff, traditional: true });