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

本文详细介绍了在前端开发中,如何使用不同方法高效获取大量表单数据,包括普通方法、serialize方法及serializeArray方法,并对每种方法的优缺点进行分析。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  我们使用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",}

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


评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值