>웹 프론트엔드 >JS 튜토리얼 >serializeArray를 기반으로 한 jQuery serializeObject

serializeArray를 기반으로 한 jQuery serializeObject

巴扎黑
巴扎黑원래의
2017-07-03 13:56:231591검색

jQuery에는 양식을 string으로 직렬화할 수 있는 $.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>

then

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



20150125updated
===========
+ 이 버전은 더 이상 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;
};

위 내용은 serializeArray를 기반으로 한 jQuery serializeObject의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.