JQuery中serialize()、serializeArray()和param()方法
2019獨角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
與JQuery中其他方法一樣,serialize()方法也是作用于一個JQuery對象,它能夠?qū)OM元素內(nèi)容序列化為字符串,用于ajax請求。通過使用serialize()方法,可以提交本頁面的所有域,代碼如下:
$("#send").click(function(){??$.get("get1.jsp",?$("#form1").serialize(),?function(data,?textStatus)??$("#resText").html(data);??});?? });當(dāng)單擊“提交”按鈕后,所有屬于form1的表單元素都能提交到后臺,即使在表單中再增加字段,腳本仍然能夠使用,并且不需要做其他多余工作。
用字符串方式時,需要注意對字符編碼(中文問題),如果不希望編碼帶來麻煩,可以使用serialize()方法,它會自動編碼。
因為serialize()方法作用于JQuery對象,所以不光只有表單能使用它,其他選擇器選取的元素也都能使用它,如以下JQuery代碼:
$(":checkbox,:radio").serialize();把復(fù)選框和單選框的值序列化為字符串形式,只會將選中的值序列化。
?
在JQuery中還有一個與serialize()類似的方法--serializeArray(),該方法不是返回字符串,而是將DOM元素序列化后,返回JSON格式的數(shù)據(jù)。JQuery代碼如下:
var?fields?=?$(":checkbox,:radio").serializeArray(); console.log(fields);????//用FireBug輸出$.param()方法是serialize()方法的核心,用來對一個數(shù)組或?qū)ο蟀凑誯ey/value進(jìn)行序列化。
比如將一個普通的對象序列化:
var?obj?=?{a:1,b:2,c:3}; var?k?=?$.param(obj); alert(k);????//輸出a=1&b=2&c=3基于serializeArray()的擴(kuò)展jquery的serializeObject()方法:
//注意該方法需要傳入一個jqury的form表單,例如:$("#myform") var?sy?=?sy?||?{}; sy.serializeObject?=?function(form)?{var?o?=?{};$.each(form.serializeArray(),?function(index)?{/*如果表單項的值非空,才進(jìn)行序列化操作*/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; };設(shè)有form中有username,password兩個input,看效果
$("form").serialize() 顯示為:
?username=""& password="";
$("form").serializeArray() 顯示為:
[{"name":"username","value":""},{"name":"password","value":""}];
$("form").serializeObject() 顯示為:
{"username":"","password":""};
serializeObject僅適用于name值不重復(fù)的情況,若name值重復(fù),則取第一個
用法:一般在做jquery的ajax請求的時候,使用serialize()方法,但是在easyui的datagrid的load()和reload()方法中,需要傳遞的是一個對象,例如:$("#datagrid").datagrid("load",{name:"libai",address:"hubei"});如果我們不想拼接手寫去一個個拼接需要傳遞的請求,參數(shù),那么可以使用reliableObject()函數(shù),來自動生成一個object對象
轉(zhuǎn)載于:https://my.oschina.net/u/2331760/blog/424037
總結(jié)
以上是生活随笔為你收集整理的JQuery中serialize()、serializeArray()和param()方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 程序员面试的一些心得
- 下一篇: 数据挖掘实习