将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。
2015-01-22 20:02
871 查看
http://zhengxinlong.iteye.com/blog/848712
将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。
将任意一个jQuery对象进行表单序列化,免除了提交请求时大量拼写表单数据的烦恼,支持键值对<name&value>格式和JSON格式。
/// <reference name="jquery.js" description="1.3.2版本以上" /> /*!* 扩展jQuery表单序列化函数:{ Version: 1.2, Author: Eric.Zheng, CreateDate: 2010-12-21 } * * 消除了jQuery.serialize()只能对form进行序列化的局限 * 该插件可以对任意jQuery对象进行序列化 * 返回数据格式有两种:1.<name&value>(默认) 2.json * * 调用方法:$(dom).form_serialize(dataType); * 参数(可省略):dataType: 默认为html,即返回数据格式为<name&value>;若要返回json格式,则dataType = json; * 返回数据:序列化表单数据 * * BUG修复:修复了1.0版本中,多个Dom元素使用同一个name属性时,获取的数据有缺失。 * **/ (function ($) { var formJson = {}; var currentForm = null; $.fn.form_serialize = function (dataType) { currentForm = $(this); formJson = {}; var doms = currentForm.find('[name]'); $.each(doms, function (index, dom) { var domName = $(dom).attr('name'); if (!formJson[domName]) { formJson[domName] = { Name: domName, Type: $(dom).attr('type'), Doms: currentForm.find('[name=' + domName + ']') }; } }); return getResult(dataType); }; var getResult = function (dataType) { var d = { toJson: function () { var data = {}; $.each(formJson, function (key, json) { data[key] = getVal(json); }); return data; }, toString: function () { var val = ''; var index = 0; $.each(formJson, function (key, json) { var prefix = '&'; if (index == 0) prefix = ''; index++; val += prefix + key + '=' + getVal(json); }); return val; } }; return dataType == 'json' ? d.toJson() : d.toString(); } var getVal = function (json) { var methods = { getDefaultVal: function (dom) { return $(dom).val(); }, getSelectVal: function (dom) { var val = ''; var selectType = $(dom).attr('type'); if (selectType == 'select-multiple') { var items = $(dom).val(); if (items == null) return ''; for (var i = 0; i < items.length; i++) { val += i == 0 ? items[i] : (',' + items[i]); } return val; } else { return $(dom).val(); } }, getRadioVal: function (dom) { return $(dom).attr('checked') ? $(dom).val() : null; }, getCheckBoxVal: function (dom) { return methods.getRadioVal(dom); } }; var dispacher = function (type, dom) { switch (type) { case 'text': case 'password': case 'hidden': case 'textarea': return methods.getDefaultVal(dom); case 'select-one': case 'select-multiple': return methods.getSelectVal(dom); case 'radio': return methods.getRadioVal(dom); case 'checkbox': return methods.getCheckBoxVal(dom); default: return ''; } }; var domType = json.Type; var doms = $(json.Doms); var count = doms.length; if (count > 1) { var val = ''; var index = 0; for (var i = 0; i < count; i++) { var v = dispacher(domType, doms.eq(i)); if (v == '' || v == null || v == undefined) continue; val += index++ == 0 ? dispacher(domType, doms.eq(i)) : (',' + dispacher(domType, doms.eq(i))); } return val; } else { return dispacher(domType, doms); } }; })(jQuery);
相关文章推荐
- json数据与JAVA数据的转换 jsonJavaBean.netApache 自己编写了一个工具类,处理页面提交json格式数据到后台,再进行处理成JAVA对象数据 1、DTO:Data T
- Jquery 将表单序列化为Json对象.同时提交多个表单的参数
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 serlet
- Jquery将表单序列化为Json对象{xx:'xx'} 和{'xx':'xx'}都支持
- jquery序列化form表单使用ajax提交后处理返回的json数据
- 久违的json使用大法 (通常Ajax希望返回多个键值对,可以用将要返回的数据先封装到一个对象中,再将这个对象转为json格式)
- 沫沫金 - jQuery序列化form表单【支持ajax提交form对象表单entity.xxx】
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及非文件上传的部分
- struts2 + ajax(由前台的form提交数据到后台,再根据form所调用返回获取的后台json格式的数据返回到前端,然后前端用jquery对json数据进行解析)==》》涉及文件上传的部分
- ######保存角色,add表单页面Ajax传参给action,多个集合属性,【较为复杂的页面传参(封装ajax json参数)】:注意表单数据序列化,jquery遍历,json对象转String
- form表单中name属性值为submit时,无法提交,出现"对象不支持此属性或方法"
- jQuery 表单数据序列化为json格式
- jquery序列化form表单使用ajax提交后处理返回的json数据
- 把json格式对象转成可提交字符串格式,会过滤掉函数 {a: {b: 3}, b: [1], c: "d"} -> a.b=3&b[0]=1&c=d
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 jsp页面
- 表单按回车自动提交 1、当form表单中只有一个<input type="text" name='name' />时按回车键将会自动将表单提交。 <form id='form1' action='a
- jquery序列化form表单使用ajax提交后处理返回的json数据
- Jquery 将表单序列化为Json对象.同时提交多个表单的参数
- jquery与后台进行数据交互--前台发单一数据对象,后台返回一个json字符串 serlet配置页面
- Jquery如何序列化form表单数据为JSON对象