`
Action-人生
  • 浏览: 98540 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

Jquery将表单转化成Json对象

阅读更多
http://www.wufangbo.com/jquery-form-to-json/
大家知道Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法。不过,我们可以写一个插件实现。



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

Js代码
/**
* 重置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对象。





下面是表单:

Html代码
<form id=”myForm” action=”#”>
<input name=”name”/>
<input name=”age”/>
<input type=”submit”/>
</form>

Html代码
<form id=”myForm” action=”#”>
    <input name=”name”/>
    <input name=”age”/>
    <input type=”submit”/>
</form>


Jquery插件代码如下:

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

下面测试一下:$(“#myForm”).bind(“submit”,function(e){

Js代码e.preventDefault();
console.log($(this).serializeJson());
});输入a,b提交,得到序列化结果
{age: “b”,name: “a”}





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

Js代码

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

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



测试如下:

表单:



Html代码<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”]}
分享到:
评论

相关推荐

    使用JQuery实现从JSON对象转换为form提交数据

    使用JQuery实现从JSON对象转换为form提交数据

    html对应的文件中 将form 表单数据 转化为json 格式

    Jquery中使用ajax,表单post提交数据 插入oracle数据库, html对应的文件中 将form 表单数据 转化为json 格式

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

    但是,观察输出的信息,发现serialize()方法做的是将表单中的数据以htpp请求格式拼接成字符串。 serialize确实是能够解决一般的提交数据。但是有时我们需要的是一个object对象,而不是字符串(比如jqgrid reload时...

    jQuery实现form表单序列化转换为json对象功能示例

    本文实例讲述了jQuery实现form表单序列化转换为json对象功能。分享给大家供大家参考,具体如下: 做web前端开发时,需要ajax提交大量表单数据,如果一个个form字段拼接很费劲也容易出错,下面方法可解决这个问题 &...

    将JavaScript的jQuery库中表单转化为JSON对象的方法

    主要介绍了将JavaScript的jQuery库中表单转化为JSON对象的方法,包括对序列化时空格问题的处理方法,需要的朋友可以参考下

    jQuery扩展方法实现Form表单与Json互相转换的实例代码

    把表单转换出json对象 //把表单转换出json对象 $.fn.toJson = function () { var self = this, json = {}, push_counters = {}, patterns = { validate: /^[a-zA-Z][a-zA-Z0-9_]*(?:\[(?:\d*|[a-zA-Z0-9_]+)\...

    json-editor:一个将JSON模式转换为表单的jquery插件

    为什么用json-edit ...值/默认值:{} /一个json对象 ExpandingLevel /默认值:-1 /最初扩展的树级别。 默认情况下,所有级别都会扩展 renderFirstLevel /默认值:false /表示根元素以可视容器的形式呈现

    jQuery向后台传入json格式数据的方法

    前后台数据交互一般都用json格式,后台可以直接将json对应转化为实体对象。方便以后的操作。jQuery向后台传数据的时候,我们会发现他会自动转化成查询字符串,不能真正传入一个json。而且用jquery对表单序列化的时候...

    jQuery序列化后的表单值转换成Json

    小朋友有一个表单,他想以Json的方式获取到表单的内容。小朋友尝试了以下方式。 通过$(#form).serialize()可以获取到序列化的表单值字符串。 例如: a=1&b=2&c=3&d=4&e=5 通过$(#form).serializeArray()输出以数组...

    jsForm:jQuery库,用于将html表单与json连接。 这允许使用json数据自动填充html表单并检索更改。 即使是收藏品和更深的物品

    jquery.jsForm 基于jQuery的表单库,该库允许... 通过将json(二进制文件)转换为数据url来处理它们 提供仅使用html标记来处理数组操作(添加新条目/删除条目)的辅助方法 可以与自动完成功能结合使用以添加新的数组对

    JSON转换方法总结

    此文档为json Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法。不过,我们可以写一个插件实现。 有人用替换的方法,先用serialize序列化后,将&替换成“:”...

    J2EE中JSONJquery_AJAX应用中文PDF版

    主要是描述使用JSON JQuery_AJAX实现页面动态加载与页面表单数据的异步保存。首先页面通过调用JQuery_AJAX方法访问后台Action,在后台Action中将获取到的JavaBean、List、Map等数据类型转换为json-lib.ja 资源太大,...

    Jquery中增加参数与Json转换代码

    在jquery中,使用$(“#myform”).serialize()可以将表单的内容构造成一个querystring,例如width=1680&height=1050这样的表达式,可以转化为json 表达式{“width”:”1680″,”height”:”1050″}。 有时候,我们需要...

    JQuery权威指南源代码

    使用jQuery表单对象属性过滤选择器 使用jQuery表单过滤选择器 第3章 DOM树状文档 获取元素的属性 设置元素的属性 设置元素的属性 获取或设置元素的内容 获取或设置元素的值 直接设置元素样式值 增加CSS类别...

    jQuery权威指南-源代码

    书名:jQuery权威指南(系统介绍jQuery方方面面,囊括118个实例和2个综合案例,实战性强) 作者:陶国荣 著 ...10.8.2 DOM对象与jQuery对象的类型转换/335 10.9 本章小结/337 第11章 综合案例开发...

    jquery.serializejson.min.js

    jquery.serializejson.min.js 一个js文件,加入后能对表单中的数据序列化,转化成json

Global site tag (gtag.js) - Google Analytics