Heim >Web-Frontend >js-Tutorial >jQuery serializeObject basierend auf serializeArray

jQuery serializeObject basierend auf serializeArray

巴扎黑
巴扎黑Original
2017-07-03 13:56:231597Durchsuche

jQuery verfügt über die Methode $.fn.serialize, die das Formular in einen String serialisieren kann; es gibt die Methode $.fn.serializeArray, in die das Formular serialisiert werden kann ein Array.
Wenn Sie es in ein JSONObjekt serialisieren müssen, können Sie es einfach implementieren, indem Sie die Methode serializeObject basierend auf serializeArray schreiben:

//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;
};


Hinweis: Wenn Parameter mit demselben Namen im Formular erscheinen, nimmt serializeObject den ersten und ignoriert die nachfolgenden. Wenn

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

hat, dann

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



20150125aktualisiert
===========
+ Diese Version ist nicht mehr mit IE8 kompatibel
+ Ein Logikfehler wurde behoben

//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;
	},{});
};



Update 20150705
============

+ Reduzieren Sie Methodenabhängigkeiten und erweitern Sie den Kompatibilitätsbereich
+ Wechseln Sie zu nativen Schleifen, um die Codeleistung zu verbessern

//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;
};

Das obige ist der detaillierte Inhalt vonjQuery serializeObject basierend auf serializeArray. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn