网上序列化表单内容成json字符串,有的很复杂有的完全不好用;现在分享的是真正好用的一个例子。
准备内容
1. js中if的条件表达式
- 所有的对象都被当作 true
- 当且仅当字符串为空时,该字符串被当作 false
- null 和 undefined 被当作 false
- 当且仅当数字为零时,该数字被当作 false
2. js中对map结构的取值
var map={
key1:'abc',
key2:'def'
};
var key='key4';
map[key]='34'; // 动态取值
正文
$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();
$.each(a, function() {
if (o[this.name]) { //判断是否已经存在了
if (!o[this.name].push) { // 改元素不是嵌套在数组中
o[this.name] = [ o[this.name] ]; // 需要把它嵌套在数组中去
} o[this.name].push(this.value || '');
} else {// 不存在
o[this.name] = this.value || '';// 赋值,如果是null那么就是false就要把''作为值赋给表达式左边
}
});
return o;
}
代码来源:http://stackoverflow.com/questions/1184624/convert-form-data-to-javascript-object-with-jquery