jQuery.param()
jQuery.param( obj ) 返回: String
描述: 創(chuàng)建一個(gè)序列化的數(shù)組或?qū)ο螅m用于一個(gè)URL 地址查詢字符串或Ajax請求。
-
version added: 1.2jQuery.param( obj )
obj一個(gè)數(shù)組或序列化的對象。
-
version added: 1.4jQuery.param( obj, traditional )
obj一個(gè)數(shù)組或序列化的對象。
traditional一個(gè)布爾值,指示是否執(zhí)行了傳統(tǒng)的“shallow”的序列化。
這個(gè)函數(shù) 可以將元素的值 轉(zhuǎn)換為 序列化字符串 (更多細(xì)節(jié)查閱 .serialize() )。
在 jQuery 1.3中, 這個(gè)函數(shù)的返回值被用來代替函數(shù)作為一個(gè)字符串。
在 jQuery 1.4中, $.param() 方法 遞歸對象以至于 適應(yīng)就好像 PHP 和 Ruby on Rails一樣的現(xiàn)代的腳本語言 和 框架。 你可以通過設(shè)置 jQuery.ajaxSettings.traditional = true;廢除這個(gè)全局功能。
注意: 因?yàn)橐恍┛蚣芙馕鲂蛄谢臄?shù)字的能力有限, 當(dāng)通過obj或者數(shù)組中包含嵌套在另一個(gè)數(shù)組傳遞參數(shù),我們應(yīng)該謹(jǐn)慎。
在 jQuery 1.4 HTML5中輸入序列話的元素,也是如此。
我們可以顯示一個(gè)對象的查詢字符串 和一個(gè)相應(yīng)的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);
recursiveEncoded 和 recursiveDecoded 的結(jié)果如下:
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()的性能, 我們可以設(shè)置 traditional 參數(shù)為 true:(英文語文:To emulate the behavior of $.param() prior to jQuery 1.4, we can set the traditional argument to 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);
shallowEncoded 和 shallowDecoded 的結(jié)果如下:
a=%5Bobject+Object%5D&b=1&b=2&b=3
a=[object+Object]&b=1&b=2&b=3
舉例:
例子: 序列化一個(gè) key/value 對象.
<!DOCTYPE html>
<html>
<head>
<style>div { color:red; }</style>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
</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:
例如: 序列號一些復(fù)雜的對象
// <=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"