jquery沒有直接支援form到json的序列化方法,目前網上有乙個實現是這樣的
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
$.fn.serializeobject =
function
() ;
var
a =
this
.serializearray();
$.each(a,
function
()
o[
this
.name].push(
this
.value ||
''
);
}
else
});
return
o;
}
這個function對於普通的物件轉換是足夠的,但是如果出現物件內部又包含子物件的情形就不能支援了。
例如我有這樣的乙個form表單:
1
2
3
4
5
<
form
id="testform">
<
input
type="text" name="name" value="dummyname" id="name">
<
input
type="text" name="category.id" value="categoryid" id="name">
<
input
type="text" name="category.name" value="categoryname" id="name">
對應到server端上的domain class是這樣的:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
public
class
dummyproduct
public
void
setcategory(dummycategory category)
public
string getname()
public
void
setname(string name)
}
public
class
dummycategory
public
void
setid(string id)
public
string getname()
public
void
setname(string name)
}
如果想把表單資料序列化成跟server端domain class匹配的json字串,就可以使用我下面的這個擴充套件
1
/** @serializedparams looks like
"prop1=value1&prop2=value2"
.
1
nested property like
'prop.subprop=value'
is also supported **/
1
function
paramstring2obj (serializedparams) ;
function
evalthem (str)
var
array = attributename.split(
"."
);
for
(
var
i = 1; i < array.length; i++) ;
var
evalstring = tmparray.join(
"."
);
// alert(evalstring);
if
(!eval(evalstring));"
);
}
};
eval(
"obj."
+attributename+
"='"
+attributevalue+
"';"
);
};
var
properties = serializedparams.split(
"&"
);
for
(
var
i = 0; i < properties.length; i++) ;
return
obj;
}
$.fn.form2json =
function
()
使用起來大概像這個樣子:
1
2
var
json = $(
"#testform"
).form2json();
alert(json);
form表單序列化為Jquery物件
1 form id dailyfinancial class form inline 2 div class form group 3 label for financialtype 記賬型別 label 4 select class form control id financialtype na...
jquery表單序列化
例項 輸出序列化表單值的結果 複製 如下 button click function 定義和用法 serialize 方法通過序列化表單值,建立 url 編碼文字字串。您可以選擇乙個或多個表單元素 比如 input 及 或 文字框 或者 form 元素本身。序列化的值可在生成 ajax 請求時用於 ...
Jquery將form表單序列化成JSON物件
廢話不多說,直接上 將這個表單的資料提交給介面,介面所需為json物件 因為通過 form serializearray 輸出的是陣列形式的,所以我們必須用別的方法 function var a this.serializearray each a,function o this.name push...