最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

jQuery基于serializeArray的serializeObject

来源:动视网 责编:小采 时间:2020-11-27 20:17:17
文档

jQuery基于serializeArray的serializeObject

jQuery基于serializeArray的serializeObject:jQuery有方法$.fn.serialize,可将表单序列化成字符串;有方法$.fn.serializeArray,可将表单序列化成数组。如果需要其序列化为JSON对象,那么可以基于serializeArray编写方法serializeObject轻松实现://work with jQuery 1.x
推荐度:
导读jQuery基于serializeArray的serializeObject:jQuery有方法$.fn.serialize,可将表单序列化成字符串;有方法$.fn.serializeArray,可将表单序列化成数组。如果需要其序列化为JSON对象,那么可以基于serializeArray编写方法serializeObject轻松实现://work with jQuery 1.x

jQuery有方法$.fn.serialize,可将表单序列化成字符串;有方法$.fn.serializeArray,可将表单序列化成数组。
如果需要其序列化为JSON对象,那么可以基于serializeArray编写方法serializeObject轻松实现:

//work with jQuery 1.x
jQuery.prototype.serializeObject=function(){
	var obj=new Object();
	$.each(this.serializeArray(),function(index,param){
	if(!(param.name in obj)){
	obj[param.name]=param.value;
	}
	});
	return obj;
};


注:当表单中参数出现同名时,serializeObject会取第一个,而忽略后续的。

设有

<form>
	<input type="text" name="username" />
	<input type="text" name="password" />
</form>

jQuery("form").serialize(); //"username=&password="
jQuery("form").serializeArray(); //[{name:"username",value:""},{name:"password",value:""}]
jQuery("form").serializeObject(); //{username:"",password:""}

20150125更新
===========
+ 此版本不再兼容IE8
+ 修复一个逻辑错误

//work with jQuery 2.x
jQuery.prototype.serializeObject=function(){
	var hasOwnProperty=Object.prototype.hasOwnProperty;
	return this.serializeArray().reduce(function(data,pair){
	if(!hasOwnProperty.call(data,pair.name)){
	data[pair.name]=pair.value;
	}
	return data;
	},{});
};

20150705更新
===========

+ 减少方法依赖,扩大兼容范围
+ 改用原生循环,提升代码性能

//work with jQuery Compact 3.x
jQuery.prototype.serializeObject=function(){
	var a,o,h,i,e;
	a=this.serializeArray();
	o={};
	h=o.hasOwnProperty;
	for(i=0;i<a.length;i++){
	e=a[i];
	if(!h.call(o,e.name)){
	o[e.name]=e.value;
	}
	}
	return o;
};

文档

jQuery基于serializeArray的serializeObject

jQuery基于serializeArray的serializeObject:jQuery有方法$.fn.serialize,可将表单序列化成字符串;有方法$.fn.serializeArray,可将表单序列化成数组。如果需要其序列化为JSON对象,那么可以基于serializeArray编写方法serializeObject轻松实现://work with jQuery 1.x
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top