JQuery中serialize() 序列化
本文导读:在jQuery中,当我们使用ajax时,常常需要拼装input数据以键值对(Key/Value)的形式发送到服务器,用JQuery的serialize方法可以轻松的完成这个工作,使用这个方法可以将表单序列化为键值对(key1=value1&key2=value2…)后提交。下面介绍JQuery中serialize()的用法
一、serialize()定义和用法:
serialize()方法通过序列化表单值,创建标准的URL编码文本字符串,它的操作对象是代表表单元素集合的jQuery对象。你可以选择一个或多个表单元素(比如input或文本框),或者form元素本身。序列化的值可在生成AJAX请求时用于URL查询字符串中。
语法:
$(selector).serialize()
详细说明
1、.serialize()方法创建以标准URL编码表示的文本字符串。它的操作对象是代表表单元素集合的jQuery对象。
2、.serialize()方法可以操作已选取个别表单元素的jQuery对象,比如<input>,<textarea>以及<select>。不过,选择<form>标签本身进行序列化一般更容易些
3、只会将”成功的控件“序列化为字符串。如果不使用按钮来提交表单,则不对提交按钮的值序列化。如果要表单元素的值包含到序列字符串中,元素必须使用name属性。
4、form里面的name不能够用Js、jquery里的关键字。
例如:length
<formid="form1"> <inputname="length"type="text"value="pipi"/> <inputname="blog"type="text"value="bluesubmarine"/> </form> //使用:$("#form1").serialize();
上面则获取不到值。
二、JQuery中serialize()实例
1、ajaxserialize()
$.ajax({ type:"POST", dataType:"json", url:ajaxCallBack, data:$('#myForm').serialize(),//要提交表单的ID success:function(msg){ alert(msg); } });
2、serialize()序列化表单实例
<scriptsrc="jquery-1.7.min。js"></script> <script> $(function(){ $("#submit").click(function(){ alert($("#myForm").serialize()); }); }); </script> <formid="myForm"> 昵称<inputtype="text"name="username"value="admin"/><br/> 密码<inputtype="password"name="password"value="admin123"/><br/> <inputtype="button"id="submit"value="序列化表单"/> </form>
点击按钮之后弹出:
username=admin&password=admin123
三、serialize是用param方法对serializeArray的一个简单包装
1、$.param()
$.param()方法是serialize()方法的核心,用来对一个数组或对象按照key/value进行序列化。
param方法的js代码
param:function(a){ /// <summary> /// Thismethodisinternal. Useserialize()instead. /// </summary> /// <paramname="a"type="Map">Amapofkey/valuepairstoserializeintoastring.</param>' /// <returnstype="String"/> /// <private/> vars=[]; functionadd(key,value){ s[s.length]=encodeURIComponent(key)+'='+encodeURIComponent(value); }; //Ifanarraywaspassedin,assumethatitisanarray //offormelements if(jQuery.isArray(a)||a.jquery) //Serializetheformelements jQuery.each(a,function(){ add(this.name,this.value); }); //Otherwise,assumethatit'sanobjectofkey/valuepairs else //Serializethekey/values for(varjina) //Ifthevalueisanarraythenthekeynamesneedtoberepeated if(jQuery.isArray(a[j])) jQuery.each(a[j],function(){ add(j,this); }); else add(j,jQuery.isFunction(a[j])?a[j]():a[j]); //Returntheresultingserialization returns.join("&").replace(/%20/g,"+"); }
例如
varobj={a:1,b:2,c:3}; vark=$.param(obj); alert(k); //输出a=1&b=2&c=3
2、serializeArray
serializeArray方法是将一个表单当中的各个字段序列化成一个数组
serializeArray方法的jquery定义
serializeArray:function(){ /// <summary> /// SerializesallformsandformelementsbutreturnsaJSONdatastructure. /// </summary> /// <returnstype="String">AJSONdatastructurerepresentingtheserializeditems.</returns> returnthis.map(function(){ returnthis.elements?jQuery.makeArray(this.elements):this; }) .filter(function(){ returnthis.name&&!this.disabled&& (this.checked||/select|textarea/i.test(this.nodeName)|| /text|hidden|password|search/i.test(this.type)); }) .map(function(i,elem){ varval=jQuery(this).val(); returnval==null?null: jQuery.isArray(val)? jQuery.map(val,function(val,i){ return{name:elem.name,value:val}; }): {name:elem.name,value:val}; }).get(); }
serializeArray数据例子
[{ name:username, value:中国 },{ name:password, value:xxx }]
以上就是本文所述的全部内容了,希望大家能够喜欢。