jquery 手册
Ajax
属性(Attributes)
回调对象(Callbacks ..
核心(Core)
CSS
数据(Data)
延迟对象(Deferred o ..
尺寸(Dimensions)
效果(Effects)
事件(Events)
表单(Forms)
文档操作(Manipulati ..
杂项(Miscellaneou ..
位置(Offset)
插件编写(Plugin Aut ..
属性(Properties)
选择器(Selectors)
遍历(Traversing)
工具(Utilities)

Returns: StringString jQuery.param( Array | Object obj, Boolean traditional )

描述:创建一个序列化的数组或对象,适用于一个URL 地址查询字符串或Ajax请求.
  • version added: 1.2
  • jQuery.param( Array | Object obj )
  • obj 用于序列化的数组或对象.
  • version added: 1.4
  • jQuery.param( Array | Object obj, Boolean traditional )
  • obj 用于序列化的数组或对象.
    traditional 一个布尔值,指示是否执行了传统的“shallow”的序列化.

这个函数 可以将元素的值 转换为 序列化字符串 (更多细节查阅 .serialize()).

如果传入的是对象数组,必须是通过.serializeArray()序列化后的数组

[{name:"first",value:"Rick"},
{name:"last",value:"Astley"},
{name:"job",value:"Rock Star"}]

注意: 因为一些框架解析序列化的数字的能力有限, 当通过obj或者数组中包含嵌套在另一个数组传递参数,我们应该谨慎。

在 jQuery 1.4中, HTML5输入框元素也必须是经过序列化的.

我们可以显示一个对象的查询字符串 和一个相应的URI-decoded 版本,如下:

var myObject = {
  a: {
    one: 1, 
    two: 2, 
    three: 3
  }, 
  b: [1,2,3]
};
var recursiveEncoded = $.param(myObject);
var recursiveDecoded = decodeURIComponent($.param(myObject));

alert(recursiveEncoded);
alert(recursiveDecoded);

recursiveEncodedrecursiveDecoded的结果展示如下:

a%5Bone%5D=1&a%5Btwo%5D=2&a%5Bthree%5D=3&b%5B%5D=1&b%5B%5D=2&b%5B%5D=3
a[one]=1&a[two]=2&a[three]=3&b[]=1&b[]=2&b[]=3

在jQuery 1.4之前 $.param()方法的效果可以通过设置traditional 参数为true来观察:

var myObject = {
  a: {
    one: 1, 
    two: 2, 
    three: 3
  }, 
  b: [1,2,3]
};
var shallowEncoded = $.param(myObject, true);
var shallowDecoded = decodeURIComponent(shallowEncoded);

alert(shallowEncoded);
alert(shallowDecoded);

shallowEncodedshallowDecoded 的结果展示如下:

a=%5Bobject+Object%5D&b=1&b=2&b=3
a=[object+Object]&b=1&b=2&b=3

Examples:

例子:

序列化一个key/value对象.
<!DOCTYPE html>
<html>
<head>
  <script src="../jquery.min.js"></script>
  <style>div { color:red; }</style>
</head>
<body>
  <div id="results"></div>
  <script>var params = { width:1680, height:1050 };
    var str = jQuery.param(params);
    $("#results").text(str);</script>
</body>
</html>

Demo:

例子:

序列化一些复杂对象
// <=1.3.2: 
$.param({ a: [2,3,4] }) // "a=2&a=3&a=4"
// >=1.4:
$.param({ a: [2,3,4] }) // "a[]=2&a[]=3&a[]=4"

// <=1.3.2: 
$.param({ a: { b:1,c:2 }, d: [3,4,{ e:5 }] }) // "a=[object+Object]&d=3&d=4&d=[object+Object]"
// >=1.4: 
$.param({ a: { b:1,c:2 }, d: [3,4,{ e:5 }] }) // "a[b]=1&a[c]=2&d[]=3&d[]=4&d[2][e]=5"