700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > jQuery表单序列化方法serialize() serializeArray()

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

时间:2022-10-02 08:07:35

相关推荐

jQuery表单序列化方法serialize() 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", …}

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

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。