在jquery里面主要有这几个方法来转换表单的
1.serialize()方法
格式:var data = $("#formID").serialize();
功能:将表单内容序列化成一个字符串。
这样在ajax提交表单数据时,就不用一一列举出每一个参数。只需将data参数设置为 $("form").serialize()即可。
2.serializeArray()方法
格式:var jsonData = $("#formID").serializeArray();
功能:将页面表单序列化成一个JSON结构的对象。注意不是JSON字符串。
比如,[{"name":"lihui"},{...}] 获取数据为 jsonData[0].name
3.$.param()方法,可以把json格式数据序列化成字符串形式
alert( $("#updateForm").serialize());
alert( $("#updateForm").serializeArray());
alert( $.param( $("#updateForm").serializeArray()));
1.serialize()方法
2.serializeArray()方法
3.$.param()方法
而如果想把表单对象转换为json则需要扩展serializeArray()方法扩展代码如下(源于网络上):
$.fn.serializeObject = function() {
var o = {};
var a = this.serializeArray();//序列化为form一个个的对象
$.each(a, function() {
if (o[this.name]) {//如果已经存在这个name(可能是重复的input)
if (!o[this.name].push) {//如果是不是一个数组,也就是此时为第二个相同的name
o[this.name] = [ o[this.name] ];//将其变为数组
}
o[this.name].push(this.value || '');//变成数组后将值转换为字符串加入刚才变好的的数组
} else {
o[this.name] = this.value || '';//如果不是重复的则转换为字符串写入o对象
}
});
return o;
};
然后使用就行了:
var jsonuserinfo = $('#form1').serializeObject();
alert(JSON.stringify(jsonuserinfo));
这样服务端只要有支持json处理的框架就不需要自己再手动获取参数了,可以直接自动注入,比如使用springmvc, 而且springmvc还支持list,map的form json处理
基本上不用写获取参数等:
http://blog.csdn.net/senssic/article/details/25815133