ホームページ > ウェブフロントエンド > jsチュートリアル > SerializeArrayに基づくjQueryのserializeObject

SerializeArrayに基づくjQueryのserializeObject

巴扎黑
リリース: 2017-07-03 13:56:23
オリジナル
1607 人が閲覧しました

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>
ログイン後にコピー

その後

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;
};
ログイン後にコピー

以上がSerializeArrayに基づくjQueryのserializeObjectの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート