必威体育Betway必威体育官网
当前位置:首页 > IT技术

jQuery表单序列化方法serialize(),serializeArray()

时间:2019-09-02 09:40:00来源:IT技术作者:seo实验室小编阅读:60次「手机版」
 

serializearray

  我们使用ajax给后台传递数据的时候,经常要获取表单的数据。表单数据不多还好说,但是如果表单字段非常多,那么无疑是非常头疼的事。如何获取大量的表单数据,是非常重要的事情。

表单页面

	<form action="">
		<input type="text" name="username1">
		<input type="text" name="address1">
		<input type="text" name="age1">

		<input type="text" name="username2">
		<input type="text" name="address2">
		<input type="text" name="age2">
	</form>
	
	<button class="btn1">普通方法</button>
	<button class="btn2">serialize</button>
	<button class="btn3">serializeArray</button>

这里只获取表单数据,暂不做提交。


普通方法

  在了解序列化方法之前,我的做法是写一个js函数,把所有的input遍历一遍,组成一个对象通过ajax传递后台。

	$(".btn1").click(function(){
		var inputs = $("input");
		var data={};
		for(var i=0;i<inputs.length;i++){
			var name =inputs.eq(i).attr("name");
			var value=inputs.eq(i).val();
			data[name]=value;
		}
		console.log(data);	
	})

返回结果

{username1: "a", address1: "b", age1: "c", username2: "d", address2: "e", …}

  这样做似乎也可以达到目的,但是如果表单中存在select、checkbox等类型表单字段,那么似乎又要多写一些代码来获取了。


serialize方法

  serialize方法可以将表单序列化成一个拼接的字符串形式。

	$(".btn2").click(function(){
		var data = $("form").serialize();
		console.log(data);
	})

返回结果

	username1=a&address1=b&age1=c&username2=d&address2=e&age2=f

  单纯表单提交,足够使用


serializeArray方法

  serialize方法可以将表单序列化成一个特殊的json数组,带有name和value的json。

	$(".btn3").click(function(){
		var data = $("form").serializeArray()
		console.log(data);
	})

返回结果

	Array(6)
	0: {name: "username1", value: "a"}
	1: {name: "address1", value: "b"}
	2: {name: "age1", value: "c"}
	3: {name: "username2", value: "d"}
	4: {name: "address2", value: "e"}
	5: {name: "age2", value: "f"}

  很显然我们需要处理一下这个数组,才能更好的得到我们想要的数据

数组处理

	$(".btn3").click(function(){
		var data = $("form").serializeArray()
		var newdata ={}
		data.map(function(val,key){
			newdata[val.name]=val.value;
		})
		console.log(newdata);
	})

返回结果

	{username1: "a", address1: "b", age1: "c", username2: "d", address2: "e", …}

  现在得到我们想要的数据了,可以放心去传递数据了,不过这还没有结束。

  这段代码虽然实现了我们的功能,但似乎不够简洁,我们还需要优化它。

代码优化

	$(".btn3").click(function(){
		var data ={}
		$("form").serializeArray().map(function(val,key){
			data[val.name]=val.value;
		})
		console.log(data);
	})

返回结果

	{username1: "a", address1: "b", age1: "c", username2: "d", address2: "e", …}

  数据完美获取得到了,代码也进行了优化,最后就可以愉快的把数据传递给后台了。


相关阅读

Win10系统如何开启Aero特效?Win10开启Aero特效的方法

在windows系统中的毛玻璃效果也就是我们所说的Aero特效功能,该功能是自从的win7系统中新增的,其表现为任务栏呈透明状态,而在win10系

jQuery 插件 timedropper datedropper 使用

jQuery 小插件 timedropper datedropper datedropper datedropper 官网地址GitHub 地址:最新版 3.0GitHub 地址:老版本:使用说明 1.

多种方法在Discuz论坛的友情链接中加入nofollow

大家都知道在SEO中加入nofollow可以避免我们本页的权重传递出去,而更多的保留在站内的内链之中,因此很多时候我们在网页一些非重要

Excel中subtotal函数计算各种总计值的操作方法

Excel计算各种总计值的SUBTOTAL函数是如何使用的呢?具体该怎么去进行操作?今天,seo实验室小编就教大家在Excel中subtotal函数计算

qq回收站照片怎么找回?终于找到恢复的方法了

qq回收站照片怎么找回?终于找到恢复的方法了。小编会把一些珍贵的照片上传到qq空间保存,或者利用手机备份保存,随着qq空间照片增多,我

分享到:

栏目导航

推荐阅读

热门阅读