返回值:StringjQuery.param(obj,[traditional])

概述

將表單元素數組或者對象序列化。是.serialize()的核心方法。

在jQuery 1.3中,如果传递的參數是一个函数,那么用.param()会得到这个函数的返回值,而不是把这个函数作为一个字符串来返回。

在jQuery 1.4中,.param()会深度递归一个对象来满足现在脚本语言和框架,比如PHP, Ruby on Rails等。你可以通过jQuery.ajaxSettings.traditional = true; 来全局得禁用这个功能。

注意:因爲有些框架在解析序列化數字的時候能力有限,所以當傳遞一些含有嵌套對象、數組的對象作爲參數時,請務必小心!

在jQuery 1.4中,HTML5的input元素也会被序列化。

參數

objArray<Elements>/jQuery/ObjectV1.2

數組或jQuery對象會按照name/value對進行序列化,普通對象按照key/value對進行序列化。

obj,[traditional]Array<Elements>/jQuery/Object,BooleanV1.4

obj:數組或jQuery對象會按照name/value對進行序列化,普通對象按照key/value對進行序列化。

traditional:是否使用傳統的方式淺層序列化。

示例

描述:

按照key/value對序列化普通對象。

jQuery 代码:


    var params = { width:1680, height:1050 };

    var str = jQuery.param(params);

    $("#results").text(str);
結果:
width=1680&height=1050

描述:

對比兩種序列化方式

jQuery 代码:
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);

//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



var shallowEncoded = $.param(myObject, true);

var shallowDecoded = decodeURIComponent(shallowEncoded);



alert(shallowEncoded);

alert(shallowDecoded);

//a=%5Bobject+Object%5D&b=1&b=2&b=3

//a=[object+Object]&b=1&b=2&b=3