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

jQuery serializeObject basierend auf serializeArray

巴扎黑
Freigeben: 2017-07-03 13:56:23
Original
1597 Leute haben es durchsucht

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;
};
Nach dem Login kopieren


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>
Nach dem Login kopieren

hat, dann

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



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;
	},{});
};
Nach dem Login kopieren



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;
};
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage