你知道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)
设置traditional
到true
生成
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)