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

Ric*_*cky 30 jquery

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

你能介绍一下吗?

谢谢

Fel*_*ing 53

看看以下文档jQuery.param():

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

特定

var p = {foo: [1,2,3], bar: 42};
Run Code Online (Sandbox Code Playgroud)

设置traditionaltrue生成

foo=1&foo=2&foo=3&bar=42
Run Code Online (Sandbox Code Playgroud)

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

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

foo[]=1&foo[]=2&foo[]=3&bar=42
Run Code Online (Sandbox Code Playgroud)

如上所述,PHP和RoR可以更好地处理它们.


或许更有意思的是这个.鉴于:

var p = {foo: {1: [3,4], 2:2,3:3}, bar: 42};
Run Code Online (Sandbox Code Playgroud)

传统产品:

foo=[object Object]&bar=42
Run Code Online (Sandbox Code Playgroud)

与"新"方式相比,这显然没有用处:

foo[1][]=3&foo[1][]=4&foo[2]=2&foo[3]=3&bar=42
Run Code Online (Sandbox Code Playgroud)