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 }]
以上就是本文所述的全部内容了,希望大家能够喜欢。