// 合并赋值 function mergeSetValue(object, name, value, merge) { // 相同的name不进行替换,而是进行合并,合并成为一个数组 if (merge == false) { object[name] = value; } else { // 相同的name不进行替换,而是进行合并,合并成为一个数组 if (object[name]) { if ($.isArray(object[name])) { object[name].push(value); } else { object[name] = [object[name], value]; } } else { object[name] = value; } } } // 解析变量 function resolveVarName(object, name, value, merge) { // 识别是否符合格式:A[A][]、A[A]、A[A][A] // 不符合则当成字符串,符合则解析成对象 if (new RegExp("^[a-zA-Z_][a-zA-Z0-9_]+((\\[[a-zA-Z0-9_]+\\]))*(\\[\\])?$").test(name)) { // 识别出[A]部分 var subNames = name.match(new RegExp("\\[[a-zA-Z0-9_]+\\]", "g")); // 如果不包含“[”则直接赋值返回 if (name.indexOf("[") < 0) { // 相同的name不进行替换,而是进行合并,合并成为一个数组 mergeSetValue(object, name, value, merge); return object; } // 识别出变量名 var var_name = name.substring(0, name.indexOf("[")); if (object[var_name] == undefined) { object[var_name] = []; } // 设置临时变量 var temp = object[var_name]; for (i in subNames) { var subName = subNames[i]; if (temp[subName] == undefined) { temp[subName] = []; } if (i == subNames.length - 1) { // 如果是以[]结尾则代表为数组 if (new RegExp("\\[\\]$").test(name)) { temp[subName].push(value); } else { // 相同的name不进行替换,而是进行合并,合并成为一个数组 mergeSetValue(temp, subName, value, merge); } } temp = temp[subName]; } if (subNames == null || subNames.length == 0) { // 如果是以[]结尾则代表为数组 if (new RegExp("\\[\\]$").test(name)) { object[var_name].push(value); } else { // 相同的name不进行替换,而是进行合并,合并成为一个数组 mergeSetValue(object, var_name, value, merge); } } return object; } else { if (merge == false) { object[name] = value; } else { // 相同的name不进行替换,而是进行合并,合并成为一个数组 mergeSetValue(object, name, value, merge); } return object; } } /** * 将表单序列号为JSON对象 * * @param merge * 相同name的元素是否进行合并,默认不进行合并,true-进行合并 false-不进行合并 */ $.fn.serializeJson = function(merge) { if (merge == undefined || merge == null) { merge = false; } var serializeObj = {}; var array = []; // 判断当前元素是否为input元素 if ($(this).is(":input")) { array = $(this).serializeArray(); } else { array = $(this).find(":input").serializeArray(); } $(array).each(function() { resolveVarName(serializeObj, this.name, this.value, merge); }); return serializeObj; };
一般这样:
也可以这样玩:
相关推荐
本文实例讲述了jQuery实现form表单序列化转换为json对象功能。分享给大家供大家参考,具体如下: 做web前端开发时,需要ajax提交大量表单数据,如果一个个form字段拼接很费劲也容易出错,下面方法可解决这个问题 &...
jquery提供的serialize方法能够实现。 $("#searchForm").serialize(); 但是,观察输出的信息,发现serialize()方法做的是将表单中的数据以htpp请求格式拼接成字符串。 serialize确实是能够解决一般的提交数据。但是...
from表单序列化json插件 , 插件支持key-value数据的存储 one-many
这段代码序列化form表单元素为json对象: <!Doctype html> <html xmlns=http://www.w3.org/1999/xhtml> <head> <title>jQuery扩展——form序列化到json对象</title> <meta ...
Jquery自带的序列化,仅对form表单进行序列化,有很大的局限性,现在对齐进行扩展可以进行任意的序列化,包括json格式,字符串格式、数组格式,数组时自动转化为字符串等。并可以根据开发需要,随时扩展自己想要的...
主要介绍了jquery序列化form表单,使用ajax提交后处理返回的json数据的示例,需要的朋友可以参考下
主要介绍了将JavaScript的jQuery库中表单转化为JSON对象的方法,包括对序列化时空格问题的处理方法,需要的朋友可以参考下
通过$(#form).serializeArray()输出以数组形式序列化表单值。 [ {name: 'firstname', value: 'Hello'}, {name: 'lastname', value: 'World'}, {name: 'alias'}, // 值为空 ] 统统不满足小朋友想得到Json的愿望。...
serializeObject 该jquery插件会将序列化的表单数据数组映射到JSON Object。相依性库。开始导入库。 导入插件。首次使用 $( "form" ).serializeObject();二次使用 var rFormat = {id: 0,name: "John Doe"};$( "form...
基于jquery实现的form表单的序列化与反序列化。除了基本的form元素外,增加了easyui combobox的序列化与反序列化,其它类型的如有需要可自行实现。 下拉框会怎么生成以"_autoAppText"的属性记录文本,反序列时,会...
jQuery 反序列化插件 概述: 这个插件包含两个函数,它们的工作方式与 jQuery 的“serialize()”函数相反。 也就是说,“序列化”采用一种形式(或输入的集合)并为 HTTP 请求返回正确的序列化字符串,此插件中的...
作者:敖士伟 Email:ikmb@163.com 转载注明作者 说明: 1、js根据表单元素class属性,把表单元素的name和value组合为json格式;用表单元素class属性可以针对性地组合JSON数据。 2、后端ASP.NET用...
此文档为json Jquery中有serialize方法,可以将表单序列化为一个“&”连接的字符串,但却没有提供序列化为Json的方法。不过,我们可以写一个插件实现。 有人用替换的方法,先用serialize序列化后,将&替换成“:”...
#jQuery序列化哈希插件 在麻省理工学院(MIT)许可下由托管。 jQuery插件,该插件从表单或任何DOM元素的序列化返回哈希值。 它在嵌套哈希的输入名称上支持方括号。 如果要从表单获取值并将其与另一个哈希合并,...