jquery的.serializeArray()方法可以獲取形如以下
[ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: 'World'}, ]
name value組成的對象數組,如果我們想得到key為name,value為value的json對象,則如下轉換:
var m = {}; $.each($("form").serializeArray(), function(i, field){m[field.name]=field.value; });
但是這么轉換有一個弊端,就是checkbox,復選框有多個name相同的值,最后只留下了最后一個,如果想把復選框多個name相同的值存為數組,有一個解決辦法是辦json對象的值全變為數組類型,如下:
var m = {};$.each($(v).find(".panel-body form").serializeArray(), function(i, field){if(!m.hasOwnProperty(field.name)){m[field.name]=[];}m[field.name].push(field.value)});
這樣可以保證復選框的值存為一個數組,但是其他值要通過 m.key[0]來獲取了。
這里注意,在頁面中除了單選按鈕? 復選框寫多個相同的name值以外,其他不要出現name相同的表單哦。
jquery方法.serializeArray()還有一個弊端,就是不能獲取input file添加的圖片元素。