我的代码在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上得到的.那些额外的牙套来自哪里?
JQuery的1.4 发布了一个变化的嵌套PARAM系列化.从他们的网站:
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 });