ホームページ >ウェブフロントエンド >jsチュートリアル >json object_jquery にシリアル化された jQuery に基づく拡張フォーム

json object_jquery にシリアル化された jQuery に基づく拡張フォーム

WBOY
WBOYオリジナル
2016-05-16 18:14:171099ブラウズ
コードをコピー コードは次のとおりです。

$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) {
if ( !o[この名前].push) {
o[この名前] = [ o[この名前] ];
}
o[この名前].push(この値 | | '' );
} else {
o[this.name] = this.value ||
}
}; 🎜>

通常のオブジェクト変換にはこの関数で十分ですが、オブジェクトにサブオブジェクトが含まれる場合はサポートできません。
たとえば、次のようなフォームがあります:








サーバーに対応するドメイン クラスは次のとおりです:


コードは次のとおりです。 public class DummyProduct {
private DummyCategory category;
private String name; getCategory() {
カテゴリを返す;
}
public void setCategory(DummyCategory category) {
this.category = category;
}
public String getName() {
名前を返す;
}
public void setName(String name) {
this.name = name;

}
public class DummyCategory {
private String id;
private String name;
public String getId() {
return id;
public void setId(String id) {
this.id = id; >}
public String getName() {
名前を返す;
}
public void setName(String name) {
this.name = 名前;
}


サーバー側のドメイン クラスに一致する JSON 文字列にフォーム データをシリアル化する場合は、次の拡張機能を使用できます




Copy code


コードは次のとおりです。


/**@serializedParams は「prop1=value1&prop2=value2」のようになります。  
「prop.subprop=value」のようなネストされたプロパティもサポートされています **/ function paramString2obj (serializedParams) { var obj ={}; 関数 evalThem (str) { var 属性名 = str.split("=")[0]; var 属性値 = str.split("=")[1]; 🎜>if(!attributeValue){
return ;
}

var array =attributeName.split(".");
for (var i = 1; i var tmpArray = Array();
for (var j = 0; j tmpArray.プッシュ(配列[j]);
var evalString = tmpArray.join(".");
// アラート(eval(evalString));
eval(evalString "={ };");
}
}
eval("obj." 属性名 "='" 属性値 "';"); };
var プロパティ = generatedParams .split("&");
for (var i = 0; i evalThem(properties[i]); >};
return obj;
}
$.fn.form2json = function(){
var selectedParams = this.serialize();
var obj = paramString2obj(serializedParams); 🎜>return JSON.stringify(obj) ;
}


おそらく次のようになります:




コードをコピー


コードは次のとおりです:


var json = $("#testform").form2json();
alert(json);
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。