表单序列化,获取Json对象
以下方法适用于所有表单元素
1、.serialize()
$(selector).serialize()方法通过序列化表单值创建 URL 编码文本字符串
<form>
<input type="checkbox" name="username" value="南国"/>南国
<input type="checkbox" name="username" value="mary"/>mary
<input type="text" name="age" value="18"/>
</form>
var aa = $('form').serialize();
console.log(aa); // username=%E5%8D%97%E5%9B%BD&username=mary&age=18
// 用decodeURIComponent解码
console.log(decodeURIComponent(aa)); // username=南国&username=mary&age=18
2、.serializeArray()
$(selector).serializeArray()方法通过序列化表单值来创建对象(name 和 value)的数组
var aa = $('form').serializeArray();
console.log(aa);
3、.serializeJson()
把以下这段代码引入你的js文件中
$(selector).serializeJson()方法,是通过serializeArray()函数得到的数组来进行数据组装的
表单的name值为键值,若有多个相同的name值以数组的形式进行拼装,如下列的username
$.fn.serializeJson = function() {
var arr = this.serializeArray();
var json = {};
arr.forEach(function(item) {
var name = item.name;
var value = item.value;
if (!json[name]) {
json[name] = value;
} else if ($.isArray(json[name])) {
json[name].push(value);
} else {
json[name] = [json[name], value];
}
});
return json;
}
$.param()将对象转换为字符串键值对格式
$.param()可以将对象的键值转为URL地址的字符串键值对,可以更稳定准确的传递表单内容,因为有时程序对应复杂的序列化解析能力有限
var obj = {
aa: 1,
bb: 'margy',
cc: '南国'
}
console.log($.param(obj)); // aa=1&bb=margy&cc=%E5%8D%97%E5%9B%BD