返回值:String jQuery.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元素也會被序列化。
參數
obj Array<Elements>/jQuery/Object V1.2
陣列或jQuery對像會按照name/value對進行序列化,普通對像按照key/value對進行序列化。
obj,[traditional] Array<Elements>/jQuery/Object,Boolean V1.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