大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法。不过,我们可以写一个插件实现。

我在网上看到有人用替换的方法,先用serialize序列化后,将&替换成“:”、“‘”:

/**
* 重置form表单
* @param formId  form的id
*/
function resetQuery(formId){  var fid = "#" + formId;  var str = $(fid).serialize();  //str= cardSelectDate=3&startdate=2012-02-01&enddate=2012-02-04  var ob= strToObj(str);  alert(ob.startdate);//2012-02-01
}  function strToObj(str){  str = str.replace(/&/g,"','");  str = str.replace(/=/g,"':'");  str = "({'"+str +"'})";  obj = eval(str);   return obj;
} 

这个方案有个重大bug:如果输入框中本身有=怎么办呢? 所以,我的方法是,先用serializeArray序列化为数组,再封装为Json对象。

表单:
<form id="myForm" action="#"><input name="name"/><input name="age"/><input type="submit"/>
</form>

Jquery插件代码:

(function($){$.fn.serializeJson=function(){var serializeObj={};$(this.serializeArray()).each(function(){serializeObj[this.name]=this.value;});return serializeObj;};
})(jQuery);

测试一下:

$("#myForm").bind("submit",function(e){e.preventDefault();console.log($(this).serializeJson());
});

测试结果:

输入a,b提交,得到序列化结果
{age: "b",name: "a"}

上面的插件,不能适用于有多个值的输入控件,例如复选框、多选的select。下面,我将插件做进一步的修改,让其支持多选。代码如下:

(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);

这里,我将多选的值封装为一个数值来进行处理。如果大家使用的时候需要将多选的值封装为“,"连接的字符串或者其他形式,请自行修改相应代码。

表单:
<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<input type="submit"/>
</form>

测试结果:

{age: "aa",interest: ["interest2", "interest4"],name: "dd",vehicle:["Bike","Car"]}

转载于:https://www.cnblogs.com/jianliang-Wu/p/7110730.html

Jquery 将表单序列化为Json对象相关推荐

  1. 利用Jquery将表单序列化成JS对象

    //表单序列化成JSON对象 $.fn.serializeObject = function () { var o = {}; var a = this.serializeArray(); $.eac ...

  2. form表单序列化转换为json对象

    form表单序列化转换为json对象 //form表单序列化转换为json对象 (function($){$.fn.serializeJson=function(){var serializeObj= ...

  3. form表单序列化成json数据 将空值用空字符串代替(form表单中checkBox数据会用逗号隔开拼接成字符串)...

    2019独角兽企业重金招聘Python工程师标准>>> $.fn.notEmptyserializeJson = function () {var o = {};var a = th ...

  4. jQuery序列化表单为JSON对象

    [html] view plaincopy <form id="myform"> <table> <tr> <td>姓名:</ ...

  5. php获取序列化表单,jQuery 序列化表单数据 serialize() serializeArray()

    jQuery 序列化表单数据 serialize() serializeArray() 格式:var data = $("form").serialize(); 功能:将表单内容序 ...

  6. JavaScriptSerializer类 对象序列化为JSON,JSON反序列化为对象

    JavaScriptSerializer 类由异步通信层内部使用,用于序列化和反序列化在浏览器和 Web 服务器之间传递的数据.说白了就是能够直接将一个C#对象传送到前台页面成为javascript对 ...

  7. js对象序列化为json字符串

    网上找了找将js对象序列化为json字符串的方法.结果都不近人意,最后自己写了一个. 注意你得自己为Date增加toString()方法. function Serialize(obj){switch ...

  8. C# 对象序列化之序列化为Json文件(一)

    目录 1.概念 1.1原理 1.2用途 1.3 JSON序列化 1.4 二进制和XML序列化 2. 序列化为JSON 2.1 简单的序列化 2.2 复杂的序列化 3 忽略属性 3.1 忽略单个属性 3 ...

  9. php直接json_encnode对象,将PHP对象序列化为JSON

    所以我在 php.net左右徘徊,了解有关将PHP对象序列化为JSON的信息,当我偶然发现新的 JsonSerializable Interface时.它只有PHP> = 5.4,我在5.3.x ...

最新文章

  1. 10分钟精通SharePoint - SharePoint升级
  2. 2019年计算机一级考试pdf,2019年计算机一级考试试题与答案.pdf
  3. 开源Delphi:AutoCHM:CHM生成和还原Html工具
  4. 论程序员的自我修养——我在阿里干了十年开发
  5. 基金业绩的python分析_DFQ2018绩效归因与基金投资分析工具.pdf
  6. Android 计时器Chronometer 使用及源码分析,常见移动app开发框架
  7. NOIP模拟 位运算(trie树+按位贪心)
  8. 关于BottomNavigationView的使用姿势都在这里了
  9. android+桌面组件开发,android——桌面组件的开发
  10. excel打不开html超链接,excel超链接打不开怎么回事 excel超链接的详细制作教程
  11. 新品发布|机智云智能管家:智家2.0发布
  12. Kafka拉取某一个时间段內的消息
  13. api接口如何对接?
  14. 太阳的光和灯光有什么区别_阳光和灯光
  15. win10分屏快捷键无法使用_Win10分屏操作,再也不用来回切换视图了!
  16. 机械硬盘更换成固态硬盘,重做 win10系统
  17. 构建“未来级”企业,如何做对这道必答题
  18. Windows删除文件的打开方式
  19. mysql服务端heidisql_MySQL管理工具HeidiSQL
  20. 计算机校本培训心得,校本研修学习心得体会范文3篇

热门文章

  1. Extjs4.0.7 MVC Architecture异常
  2. Citrix XenServer@cloudstack基本功能测试报告2
  3. rhel5+nis+autofs+nfs
  4. 读书笔记(2) OpenLayers中的图层
  5. 我使用Python和Django在自己的网站上建立了一个会员专区。 这是我学到的东西。
  6. craigslist_Craigslist,Wikipedia和丰富经济
  7. 动态加载的html没有js效果,JS利用html5实现loadding动态加载效果代码实例
  8. 1073 Scientific Notation
  9. 数据库备份到文件服务器,数据库文件备份到云服务器上
  10. html5展示json数据库,显示数据在html5从数据库使用javascript和json