?
? ????? PHP ??? ???? ??? ?? ??
將表單元素?cái)?shù)組或者對(duì)象序列化。是.serialize()的核心方法。
在jQuery 1.3中,如果傳遞的參數(shù)是一個(gè)函數(shù),那么用.param()會(huì)得到這個(gè)函數(shù)的返回值,而不是把這個(gè)函數(shù)作為一個(gè)字符串來返回。
在jQuery 1.4中,.param()會(huì)深度遞歸一個(gè)對(duì)象來滿足現(xiàn)在腳本語言和框架,比如PHP, Ruby on Rails等。你可以通過jQuery.ajaxSettings.traditional = true; 來全局得禁用這個(gè)功能。
注意:因?yàn)橛行┛蚣茉诮馕鲂蛄谢瘮?shù)字的時(shí)候能力有限,所以當(dāng)傳遞一些含有嵌套對(duì)象、數(shù)組的對(duì)象作為參數(shù)時(shí),請(qǐng)務(wù)必小心!
在jQuery 1.4中,HTML5的input元素也會(huì)被序列化。
數(shù)組或jQuery對(duì)象會(huì)按照name/value對(duì)進(jìn)行序列化,普通對(duì)象按照key/value對(duì)進(jìn)行序列化。
obj:數(shù)組或jQuery對(duì)象會(huì)按照name/value對(duì)進(jìn)行序列化,普通對(duì)象按照key/value對(duì)進(jìn)行序列化。
traditional:是否使用傳統(tǒng)的方式淺層序列化。
按照key/value對(duì)序列化普通對(duì)象。
var params = { width:1680, height:1050 }; var str = jQuery.param(params); $("#results").text(str);
width=1680&height=1050
對(duì)比兩種序列化方式
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