Form表单使用Jquery serializeArray()与serialize()的区别
2016-06-03 00:00
483 查看
摘要: 修正serializeArray() bug
serialize()序列化表单元素为字符串,用于 Ajax 请求。
serializeArray()序列化表单元素为JSON数据。
输出的
serialize() : name=1111&age=2222&interest=interest1&interest=interest2&vehicle=Bike
serializeArray:
如上图,可以看出inserest元素,成了两个json key,而不是一个,这个会有个问题,传值到后台,只会接收到最后一个key - value ,所以是interest2 。。改成的方法。
改进后,获取的json,如下图。interest 将两个值放入了数组。
备注:file、image、button、submit、reset都不会被序列化
参考 : http://www.cnblogs.com/ningvsban/p/3659605.html
serialize()序列化表单元素为字符串,用于 Ajax 请求。
serializeArray()序列化表单元素为JSON数据。
[code=language-html]<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>test - jquery.pagination.js</title> <script src="jquery-1.11.2.min.js"></script> <style> body { font-family: 'Microsoft YaHei'; } </style> </head> <body> <div style="width:1000px; margin:0 auto;"> <form id="myForm" action="#"> <input name="name"/> <input name="age"/> <select multiple="multiple" name="interest" size="2"> <option value ="interest1">interest1</option> <option value ="interest2">interest2</option> <option value="interest3">interest3</option> <option value="interest4">interest4</option> </select> <input type="checkbox" name="vehicle" value="Bike" /> I have a bike <input type="checkbox" name="vehicle" value="Car" /> I have a car <a href="javascript:void(0)" id="btnClick">获取连接</a> </form> </div> <script> (function($){ $.fn.serializeJson=function(){ var serializeObj={}; var array=this.serializeArray(); var str=this.serialize(); $(array).each(function(){ if(serializeObj[this.name]){ if($.isArray(serializeObj[this.name])){ serializeObj[this.name].push(this.value); }else{ serializeObj[this.name]=[serializeObj[this.name],this.value]; } }else{ serializeObj[this.name]=this.value; } }); return serializeObj; }; })(jQuery); $("#btnClick").bind("click",function(e){ console.log($("#myForm").serialize()); console.log($("#myForm").serializeArray()); console.log($("#myForm").serializeJson()); }); </script> </body> </html>
输出的
serialize() : name=1111&age=2222&interest=interest1&interest=interest2&vehicle=Bike
serializeArray:
如上图,可以看出inserest元素,成了两个json key,而不是一个,这个会有个问题,传值到后台,只会接收到最后一个key - value ,所以是interest2 。。改成的方法。
[code=language-javascript](function($){ $.fn.serializeJson=function(){ var serializeObj={}; var array=this.serializeArray(); var str=this.serialize(); $(array).each(function(){ if(serializeObj[this.name]){ if($.isArray(serializeObj[this.name])){ serializeObj[this.name].push(this.value); }else{ serializeObj[this.name]=[serializeObj[this.name],this.value]; } }else{ serializeObj[this.name]=this.value; } }); return serializeObj; }; })(jQuery);
改进后,获取的json,如下图。interest 将两个值放入了数组。
备注:file、image、button、submit、reset都不会被序列化
参考 : http://www.cnblogs.com/ningvsban/p/3659605.html
相关文章推荐
- JQuery1——基础($对象,选择器,对象转换)
- JavaScript演示排序算法
- 2015-2016网页设计趋势分析 Web Design of Trends
- jQuery Ajax 跨域调用
- 移动端的长按事件
- jquery教程靠边站,一分钱不花让你免费学会jquery
- JQuery+Strusts1.x无刷新登录
- $.ajax()方法详解
- jQuery ajax - ajax() 方法
- JavaScript 各种遍历方式详解
- 数组方法汇总
- jQuery Html控件基本操作(日常收集整理)
- jQuery插件实现文字无缝向上滚动效果代码
- jQuery菜单插件用法实例
- JQuery 初体验(建议学习jquery)
- 基于Jquery和CSS3制作数字时钟附源码下载(CSS3篇)
- Jquery实现的table最后一行添加样式的代码
- jQuery实现向下滑出的平滑下拉菜单效果
- jQuery 练习[一] 学习jquery的准备工作
- jquery获得页面元素的坐标值实现思路及代码