$.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 ||
}
}; 🎜>
通常のオブジェクト変換にはこの関数で十分ですが、オブジェクトにサブオブジェクトが含まれる場合はサポートできません。
たとえば、次のようなフォームがあります:
サーバーに対応するドメイン クラスは次のとおりです:
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);