jQuery序列化form表单数据为JSON对象的实现方法


Posted in jQuery onSeptember 20, 2018

 jquery提供的serialize方法能够实现。

$("#searchForm").serialize();

但是,观察输出的信息,发现serialize()方法做的是将表单中的数据以htpp请求格式拼接成字符串。

serialize确实是能够解决一般的提交数据。但是有时我们需要的是一个object对象,而不是字符串(比如jqgrid reload时设置查询条件参数,就需要object对象)。

方法如下:

(function(window, $) {
  $.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;
  };
})(window, jQuery);

调用:

console.info($("#searchForm").serializeJson());

下面通过一段代码看下jQuery序列化表单为JSON对象

<form id="myform"> 
  <table> 
    <tr> 
      <td>姓名:</td> 
      <td> <input type="text" name="name" /> </td> 
    </tr> 
    <tr> 
      <td>性别:</td> 
      <td> 
        <input type="radio" name="sex" value="1"> 男 
        <input type="radio" name="sex" value="0"> 女 
      </td> 
    </tr> 
    <tr> 
      <td>年龄:</td> 
      <td> 
        <select name="age"> 
          <option value="20">20</option> 
          <option value="21">21</option> 
          <option value="22">22</option> 
        </select> 
      </td> 
    </tr> 
    <tr> 
      <td>爱好</td> 
      <td> 
        <input type="checkbox" value="basketball" name="hobby">篮球 
        <input type="checkbox" value="volleyball" name="hobby">排球 
        <input type="checkbox" value="football" name="hobby">足球 
        <input type="checkbox" value="earth" name="hobby">地球 
      </td> 
    </tr> 
    <tr> 
      <td colspan="2"> 
        <input type="button" id="ajaxBtn" value="提交" /> 
      </td> 
    </tr> 
  </table> 
</form> 
 
<script type="text/javascript"> 
  $(function() { 
    $("#ajaxBtn").click(function() { 
        var params = $("#myform").serializeObject(); //将表单序列化为JSON对象  
        console.info(params); 
      }) 
  }) 
  $.fn.serializeObject = function() { 
    var o = {}; 
    var a = this.serializeArray(); 
    $.each(a, function() { 
      if (o[this.name]) { 
        if (!o[this.name].push) { 
          o[this.name] = [ o[this.name] ]; 
        } 
        o[this.name].push(this.value || ''); 
      } else { 
        o[this.name] = this.value || ''; 
      } 
    }); 
    return o; 
  } 
</script>

上述serializeObject方法是将form序列化为JSON对象

总结

以上所述是小编给大家介绍的jQuery序列化form表单数据为JSON对象的实现方法 ,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
jQuery查找dom的几种方法效率详解
May 17 jQuery
jquery Ajax实现Select动态添加数据
Jun 08 jQuery
jQuery实现拖动效果的实例代码
Jun 25 jQuery
jQuery动态添加.active 实现导航效果代码思路详解
Aug 29 jQuery
jQueryMobile之窗体长内容的缺陷与解决方法实例分析
Sep 20 jQuery
jquery ztree实现右键收藏功能
Nov 20 jQuery
jquery 给动态生成的标签绑定事件的几种方法总结
Feb 24 jQuery
JS文件中加载jquery.js的实例代码
May 05 jQuery
基于jQuery实现的设置文本区域的光标位置
Jun 15 jQuery
jQuery实现表单动态添加与删除数据操作示例
Jul 03 jQuery
JQuery Ajax执行跨域请求数据的解决方案
Dec 10 jQuery
jQuery实现动态加载(按需加载)javascript文件的方法分析
May 31 jQuery
jQuery pjax 应用简单示例
Sep 20 #jQuery
jQuery easyui datagird编辑行删除行功能的实现代码
Sep 20 #jQuery
jQuery 点击获取验证码按钮及倒计时功能
Sep 20 #jQuery
jQuery使用each遍历循环的方法
Sep 19 #jQuery
jquery 动态遍历select 赋值的实例
Sep 12 #jQuery
jQuery实现为动态添加的元素绑定事件实例分析
Sep 07 #jQuery
jQuery插件实现的日历功能示例【附源码下载】
Sep 07 #jQuery
You might like
初次接触php抽象工厂模式(Elgg)
2010/03/21 PHP
php下将多个数组合并成一个数组的方法与实例代码
2011/02/03 PHP
探讨PHP函数ip2long转换IP时数值太大产生负数的解决方法
2013/06/06 PHP
PHP四大安全策略
2014/03/12 PHP
php 购物车完整实现代码
2014/06/05 PHP
全面解读PHP的人气开发框架Laravel
2015/10/15 PHP
新浪微博字数统计 textarea字数统计实现代码
2011/08/28 Javascript
控制页面按钮在后台执行期间不重复提交的JS方法
2013/06/24 Javascript
JQuery中使用Ajax赋值给全局变量失败异常的解决方法
2014/08/18 Javascript
JavaScript字符串对象substring方法入门实例(用于截取字符串)
2014/10/17 Javascript
jQuery中$this和$(this)的区别介绍(一看就懂)
2015/07/06 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
利用node.js爬取指定排名网站的JS引用库详解
2017/07/25 Javascript
Vue 路由 过渡动效 数据获取方法
2018/07/31 Javascript
在Vue项目中使用snapshot测试的具体使用
2019/04/16 Javascript
Vue2.X和Vue3.0数据响应原理变化的区别
2019/11/07 Javascript
Python的面向对象思想分析
2015/01/14 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python输出9*9乘法表的方法
2015/05/25 Python
Django框架中的对象列表视图使用示例
2015/07/21 Python
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
详解pyenv下使用python matplotlib模块的问题解决
2018/11/29 Python
flask-restful使用总结
2018/12/04 Python
Python中的Socket 与 ScoketServer 通信及遇到问题解决方法
2019/04/01 Python
python读写csv文件实例代码
2019/07/05 Python
HTML5实现锚点时请使用id取代name
2013/09/06 HTML / CSS
Schutz鞋官方网站:Schutz Shoes
2017/12/13 全球购物
Envie de Fraise意大利:法国网上推出的孕妇装品牌
2020/10/18 全球购物
Oasis服装官网:时尚女装在线
2020/07/09 全球购物
什么造成了Java里面的异常
2016/04/24 面试题
VLAN和VPN有什么区别?分别实现在OSI的第几层?
2014/12/23 面试题
大学生活动总结模板
2014/07/02 职场文书
幼儿园大班区域活动总结
2014/07/09 职场文书
小学教师求职信范文
2015/03/20 职场文书
采购部年度工作总结
2015/08/13 职场文书
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android