jQuery擴充套件 form序列化到json物件

2021-06-27 22:28:41 字數 4832 閱讀 8443

jquery沒有直接支援form到json的序列化方法,目前網上有乙個實現是這樣的

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

$.fn.serializeobject =function() ;

vara =this.serializearray();

$.each(a,function()

o[this.name].push(this.value ||'');

}else

});

returno;

}

這個function對於普通的物件轉換是足夠的,但是如果出現物件內部又包含子物件的情形就不能支援了。

例如我有這樣的乙個form表單:

1

2

3

4

5

<formid="testform">

<inputtype="text" name="name" value="dummyname" id="name">

<inputtype="text" name="category.id" value="categoryid" id="name">

<inputtype="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

publicclassdummyproduct

publicvoidsetcategory(dummycategory category)

publicstring getname()

publicvoidsetname(string name)

}

publicclassdummycategory

publicvoidsetid(string id)

publicstring getname()

publicvoidsetname(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

functionparamstring2obj (serializedparams) ;

functionevalthem (str)

vararray = attributename.split(".");

for(vari = 1; i < array.length; i++) ;

varevalstring = tmparray.join(".");

// alert(evalstring);

if(!eval(evalstring));");

}

};

eval("obj."+attributename+"='"+attributevalue+"';");

};

varproperties = serializedparams.split("&");

for(vari = 0; i < properties.length; i++) ;

returnobj;

}

$.fn.form2json =function()

使用起來大概像這個樣子:

1

2

varjson = $("#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...