请查看jQuery.param()
文档:
自jQuery 1.4版本起,
$.param()
方法会递归序列化深层次的对象,以适应现代脚本语言和框架(例如PHP和Ruby on Rails)。你可以通过设置jQuery.ajaxSettings.traditional = true;
来全局禁用此功能。
给定:
var p = {foo: [1,2,3], bar: 42};
将true
设置为traditional
会生成
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
traditional = true
吗?谢谢。 - Jinghui Niu