您好,登錄后才能下訂單哦!
怎么在jquery中使用param()實現數組或對象的序列化?針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。
jQuery.param( obj ):
創建適用于URL查詢字符串或Ajax請求的數組,普通對象或jQuery對象的序列化表示形式。 如果jQuery對象被傳遞,它應該包含具有name / value屬性的輸入元素。
jQuery.param( obj ): obj: 類型:Array或PlainObject或jQuery 一個數組,一個普通的對象,或一個jQuery對象進行序列化。 jQuery.param( obj, traditional ): obj: 類型:Array或PlainObject或jQuery 一個數組,一個普通的對象,或一個jQuery對象進行序列化。 traditional : 類型:布爾值 一個布爾值,表示是否執行傳統的“淺”序列化。
內部使用此函數將表單元素值轉換為序列化字符串表示形式(有關更多信息,請參閱.serialize())。
從jQuery 1.3開始,使用函數的返回值代替函數作為String。
從jQuery 1.4開始,$ .param()方法遞歸序列化深層對象,以適應現代腳本語言和框架,如PHP和Ruby on Rails。
您可以通過設置jQuery.ajaxSettings.traditional = true來全局禁用此功能。從jQuery 3.0開始,$ .param()方法不再使用jQuery.ajaxSettings.traditional作為其默認設置,默認為false。
為了跨版本的最佳兼容性,請調用$ .param()和第二個參數的顯式值,并且不要使用默認值。如果傳遞的對象在數組中,則它必須是由.serializeArray()返回的格式的對象數組。
[ { name: "first", value: "Rick" }, { name: "last", value: "Astley" }, { name: "job", value: "Rock Star" } ]
注意:由于某些框架解析序列化數組的能力有限,因此開發人員在傳遞包含嵌套在另一個數組中的對象或數組的obj參數時應謹慎。
注意:由于沒有普遍約定的param字符串規范,所以不可能以支持此類輸入的所有語言的理想方式對使用此方法的復雜數據結構進行編碼。 使用JSON格式替代編碼復雜數據。
在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>
演示:
序列化一些復雜的對象
// <=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"
jquery是一個簡潔而快速的JavaScript庫,它具有獨特的鏈式語法和短小清晰的多功能接口、高效靈活的css選擇器,并且可對CSS選擇器進行擴展、擁有便捷的插件擴展機制和豐富的插件,是繼Prototype之后又一個優秀的JavaScript代碼庫,能夠用于簡化事件處理、HTML文檔遍歷、Ajax交互和動畫,以便快速開發網站。
關于怎么在jquery中使用param()實現數組或對象的序列化問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。