與JQuery中其餘方法同樣,serialize()方法也是做用於一個JQuery對象,它可以將DOM元素內容序列化爲字符串,用於ajax請求。經過使用serialize()方法,能夠提交本頁面的全部域,代碼以下:html
$("#send").click(function(){ $.get("get1.jsp", $("#form1").serialize(), function(data, textStatus) $("#resText").html(data); }); });
當單擊「提交」按鈕後,全部屬於form1的表單元素都能提交到後臺,即便在表單中再增長字段,腳本仍然可以使用,而且不須要作其餘多餘工做。jquery
用字符串方式時,須要注意對字符編碼(中文問題),若是不但願編碼帶來麻煩,可使用serialize()方法,它會自動編碼。ajax
由於serialize()方法做用於JQuery對象,因此不光只有表單能使用它,其餘選擇器選取的元素也都能使用它,如如下JQuery代碼:數組
$(":checkbox,:radio").serialize();
把複選框和單選框的值序列化爲字符串形式,只會將選中的值序列化。jsp
在JQuery中還有一個與serialize()相似的方法--serializeArray(),該方法不是返回字符串,而是將DOM元素序列化後,返回JSON格式的數據。JQuery代碼以下:函數
var fields = $(":checkbox,:radio").serializeArray(); console.log(fields); //用FireBug輸出
$.param()方法是serialize()方法的核心,用來對一個數組或對象按照key/value進行序列化。ui
好比將一個普通的對象序列化:this
var obj = {a:1,b:2,c:3}; var k = $.param(obj); alert(k); //輸出a=1&b=2&c=3
基於serializeArray()的擴展jquery的serializeObject()方法:編碼
//注意該方法須要傳入一個jqury的form表單,例如:$("#myform") var sy = sy || {}; sy.serializeObject = function(form) { var o = {}; $.each(form.serializeArray(), function(index) { /*若是表單項的值非空,才進行序列化操做*/ if (this['value'] != undefined && this['value'].length > 0) { if (o[this['name']]) { o[this['name']] = o[this['name']] + "," + this['value']; } else { o[this['name']] = this['value']; } } }); return o; };
設有form中有username,password兩個input,看效果spa
$("form").serialize() 顯示爲:
username=""& password="";
$("form").serializeArray() 顯示爲:
[{"name":"username","value":""},{"name":"password","value":""}];
$("form").serializeObject() 顯示爲:
{"username":"","password":""};
serializeObject僅適用於name值不重複的狀況,若name值重複,則取第一個
用法:通常在作jquery的ajax請求的時候,使用serialize()方法,可是在easyui的datagrid的load()和reload()方法中,須要傳遞的是一個對象,例如:$("#datagrid").datagrid("load",{name:"libai",address:"hubei"});若是咱們不想拼接手寫去一個個拼接須要傳遞的請求,參數,那麼可使用reliableObject()函數,來自動生成一個object對象