序列化表单为json

在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格式数据序列化成字符串形式

      varobj={a:1,b:2}

      vars=$.param(obj);


运行下面代码看效果  其中#updateForm 为表单id

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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值