jQuery.param( obj ):
創(chuàng)建適用于URL查詢字符串或Ajax請求的數(shù)組,普通對象或jQuery對象的序列化表示形式。 如果jQuery對象被傳遞,它應(yīng)該包含具有name / value屬性的輸入元素。
jQuery.param( obj ): obj: 類型:Array或PlainObject或jQuery 一個數(shù)組,一個普通的對象,或一個jQuery對象進行序列化。 jQuery.param( obj, traditional ): obj: 類型:Array或PlainObject或jQuery 一個數(shù)組,一個普通的對象,或一個jQuery對象進行序列化。 traditional : 類型:布爾值 一個布爾值,表示是否執(zhí)行傳統(tǒng)的“淺”序列化。
內(nèi)部使用此函數(shù)將表單元素值轉(zhuǎn)換為序列化字符串表示形式(有關(guān)更多信息,請參閱.serialize())。
從jQuery 1.3開始,使用函數(shù)的返回值代替函數(shù)作為String。
從jQuery 1.4開始,$ .param()方法遞歸序列化深層對象,以適應(yīng)現(xiàn)代腳本語言和框架,如PHP和Ruby on Rails。
您可以通過設(shè)置jQuery.ajaxSettings.traditional = true來全局禁用此功能。從jQuery 3.0開始,$ .param()方法不再使用jQuery.ajaxSettings.traditional作為其默認設(shè)置,默認為false。
為了跨版本的最佳兼容性,請調(diào)用$ .param()和第二個參數(shù)的顯式值,并且不要使用默認值。如果傳遞的對象在數(shù)組中,則它必須是由.serializeArray()返回的格式的對象數(shù)組。
[ { name: "first", value: "Rick" }, { name: "last", value: "Astley" }, { name: "job", value: "Rock Star" }]注意:由于某些框架解析序列化數(shù)組的能力有限,因此開發(fā)人員在傳遞包含嵌套在另一個數(shù)組中的對象或數(shù)組的obj參數(shù)時應(yīng)謹慎。
注意:由于沒有普遍約定的param字符串規(guī)范,所以不可能以支持此類輸入的所有語言的理想方式對使用此方法的復(fù)雜數(shù)據(jù)結(jié)構(gòu)進行編碼。 使用JSON格式替代編碼復(fù)雜數(shù)據(jù)。
在jQuery 1.4中,HTML5輸入元素也被序列化。我們可以顯示一個對象的查詢字符串表示形式和一個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 );shallowEncoded和shallowDecoded的值彈出如下:
a=%5Bobject+Object%5D&b=1&b=2&b=3 a=[object+Object]&b=1&b=2&b=3
舉例:
序列化一個鍵/值對象。
<!doctype html><html lang="en"><head> <meta charset="utf-8"> <title>jQuery.param demo</title> <style> div { color: red; } </style> <script src="https://code.jquery.com/jquery-1.10.2.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>            
新聞熱點
疑難解答
圖片精選