什么是JQuery中的“传统样式的param序列化”

时间:2011-03-31 08:26:00

标签: jquery

你知道http://api.jquery.com/jQuery.ajax/中提到的jQuery.ajax()的“传统样式的param序列化”是什么?

你能介绍一下吗?

由于

1 个答案:

答案 0 :(得分:53)

查看jQuery.param():

的文档
  

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

鉴于

var p = {foo: [1,2,3], bar: 42};

traditional设置为true生成

foo=1&foo=2&foo=3&bar=42

虽然例如Python可以处理这些参数,即它为foo生成一个列表,PHP只会考虑最后一个foo参数。

但是现在默认情况下,序列化的结果是(实际上它是URI编码的)

foo[]=1&foo[]=2&foo[]=3&bar=42
如上所述,PHP和RoR可以更好地处理


或许更有意思的是这个。给出:

var p = {foo: {1: [3,4], 2:2,3:3}, bar: 42};

传统产品:

foo=[object Object]&bar=42

与“新”方式相比显然无用:

foo[1][]=3&foo[1][]=4&foo[2]=2&foo[3]=3&bar=42