jQuery ajax - param() 方法
實(shí)例
序列化一個(gè) key/value 對(duì)象:
var params = { width:1900, height:1200 }; var str = jQuery.param(params); $("#results").text(str);
結(jié)果:
width=1680&height=1050
TIY 實(shí)例
輸出序列化對(duì)象的結(jié)果:
$("button").click(function(){ $("div").text($.param(personObj)); });
定義和用法
param() 方法創(chuàng)建數(shù)組或?qū)ο蟮男蛄谢硎尽?/p>
該序列化值可在進(jìn)行 AJAX 請(qǐng)求時(shí)在 URL 查詢字符串中使用。
語(yǔ)法
jQuery.param(object,traditional)
參數(shù) | 描述 |
---|---|
object | 要進(jìn)行序列化的數(shù)組或?qū)ο蟆?/td> |
traditional | 規(guī)定是否使用傳統(tǒng)的方式淺層進(jìn)行序列化(參數(shù)序列化)。 |
詳細(xì)說(shuō)明
param() 方法用于在內(nèi)部將元素值轉(zhuǎn)換為序列化的字符串表示。請(qǐng)參閱 .serialize() 了解更多信息。
對(duì)于 jQuery 1.3,如果傳遞的參數(shù)是一個(gè)函數(shù),那么用 .param() 會(huì)得到這個(gè)函數(shù)的返回值,而不是把這個(gè)函數(shù)作為一個(gè)字符串來(lái)返回。
對(duì)于 jQuery 1.4,.param() 方法將會(huì)通過(guò)深度遞歸的方式序列化對(duì)象,以便符合現(xiàn)代化腳本語(yǔ)言的需求,比如 PHP、Ruby on Rails 等。你可以通過(guò)設(shè)置 jQuery.ajaxSettings.traditional = true; 來(lái)全局地禁用這個(gè)功能。
如果被傳遞的對(duì)象在數(shù)組中,則必須是以 .serializeArray() 的返回值為格式的對(duì)象數(shù)組:
[{name:"first",value:"Rick"}, {name:"last",value:"Astley"}, {name:"job",value:"Rock Star"}]
注意:因?yàn)橛行┛蚣茉诮馕鲂蛄谢瘮?shù)字的時(shí)候能力有限,所以當(dāng)傳遞一些含有對(duì)象或嵌套數(shù)組的數(shù)組作為參數(shù)時(shí),請(qǐng)務(wù)必小心!
在 jQuery 1.4 中,HTML5 的 input 元素也會(huì)被序列化。
更多實(shí)例
我們可以如下顯示對(duì)象的查詢字符串表示以及 URI 編碼版本:
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);
recursiveEncoded 和 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
可以將 traditional 參數(shù)設(shè)置為 true,來(lái)模擬 jQuery 1.4 之前版本中 $.param() 的行為:
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);
recursiveEncoded 和 recursiveDecoded 的值輸出如下:
a=%5Bobject+Object%5D&b=1&b=2&b=3 a=[object+Object]&b=1&b=2&b=3