`

form序列化成json串

阅读更多

 

;(function($){
/**
 * 依赖jquery-1.4.2
 * 依赖jquery.json-2.2,参考http://code.google.com/p/jquery-json/
 * 用于将form序列化成json串,并且可以反序列化添充回来
 * 作者:段旭光 2010-08-08
 */
$.fn.serializeObjectToJson = function()
{
	/**
	 * 此方法代码参考:http://css-tricks.com/snippets/jquery/serialize-form-to-json/
	 */
   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;
  // return $.toJSON(o);
};
/**
 * 按json格式添充现有form,基中json的key对应form内的元素name
 * 支持input、radio、select、textarea单值或多值
 * 参数json为json对象
 */
$.fn.unSerializeObjectFromJson = function(json)
{
	if(!json) return;
	var values=eval('('+json+')');
	var form=this;
	/**
	 * 得到现有form表单的内容,如果表单有默认值则全部清空,主要针对单值表单项,如:checkbox、radio,因为这些项如果不选中会不被序列化记录暂存,所以
	 * 在反序列化时,无法处理可能存在默认值的这些表单项,所以这里做一下特殊处理
	 */
	var defaultFormJsonValues=form.serializeObjectToJson();
	$.each(defaultFormJsonValues, function(key, value){
		var object=form.find("*[name='"+key+"']");
		if(object.length==1){
			if(object.attr("type").toLowerCase()=='radio' || object.attr("type").toLowerCase()=='checkbox'){
				object.attr("checked",false);
			}
		}
	});
	//加载需要添充的表单内容
	$.each(values, function(key,value){
		var object=form.find("*[name='"+key+"']");//得到form内指定name的控件
		if(object.length==1){
			if(object.attr("type").toLowerCase()=='radio' || object.attr("type").toLowerCase()=='checkbox'){
				if(object.val()==value){
					object.attr("checked",true);
				}
				return true;
			}else{
				object.val(value);
			}
		}else if(object.length>1){
			object.each(function(i){
				if(object.attr("type").toLowerCase()=='radio' || object.attr("type").toLowerCase()=='checkbox'){
					if($.inArray($(this).val(),value)!=-1){
						$(this).attr("checked",true);
					}else{
						$(this).attr("checked",false);
					}
				}else{
					$(this).val(value[i]);
				}
			});
		}
	});

};
/**
 * 得到当前年的第一天
 */
$.getCurrentYearFirstDay=function(format){
	var date=new Date();
	var fDate=new Date(date.getFullYear(),0,1,0,0,0,0);
	return $.getFormateDate(format,fDate);
};
/**
 * 得到当前年的最后一天
 */
$.getCurrentYearLastDay=function(format){
	var date=new Date();
	var fDate=new Date(date.getFullYear(),11,31,23,59,59,999);
	return $.getFormateDate(format,fDate);
};
/**
 * 得到当前月的第一天
 */
$.getCurrentMonthFirstDay=function(format){
	var date=new Date();
	var fDate=new Date(date.getFullYear(),date.getMonth(),1,0,0,0,0);
	return $.getFormateDate(format,fDate);
};
/**
 * 得到当前月的最后一天
 */
$.getCurrentMonthLastDay=function(format){
	var date=new Date();
	var fDate=new Date(date.getFullYear(),date.getMonth()+1,0,23,59,59,999);
	return $.getFormateDate(format,fDate);
};
/**
 * 格式化日期
 */
$.getFormateDate = function(fmt,date){
	if(!date) date=new Date();
	var o={   
    "M+" : date.getMonth()+1, //月份     
    "d+" : date.getDate(), //日     
    "h+" : date.getHours()%12 == 0 ? 12 : date.getHours()%12, //小时
    "H+" : date.getHours(), //小时
    "m+" : date.getMinutes(), //分
    "s+" : date.getSeconds(), //秒
    "q+" : Math.floor((date.getMonth()+3)/3), //季度
    "S" : date.getMilliseconds() //毫秒
    };
    var week={
    "0" : "\u65e5",
    "1" : "\u4e00",
    "2" : "\u4e8c",
    "3" : "\u4e09",
    "4" : "\u56db",
    "5" : "\u4e94",
    "6" : "\u516d"    
    };
    if(/(y+)/.test(fmt)){ 
        fmt=fmt.replace(RegExp.$1, (date.getFullYear()+"").substr(4 - RegExp.$1.length));     
    }     
    if(/(E+)/.test(fmt)){
        fmt=fmt.replace(RegExp.$1, ((RegExp.$1.length>1) ? (RegExp.$1.length>2 ? "\u661f\u671f" : "\u5468") : "")+week[date.getDay()+""]);     
    }     
    for(var k in o){
        if(new RegExp("("+ k +")").test(fmt)){
            fmt = fmt.replace(RegExp.$1, (RegExp.$1.length==1) ? (o[k]) : (("00"+ o[k]).substr((""+ o[k]).length)));
        }
    }
    return fmt;
};
})(jQuery);
分享到:
评论

相关推荐

    基于jQuery的一个扩展form序列化到json对象

    jQuery没有直接支持form到json的序列化方法,目前网上有一个实现是这样的

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

    本文实例讲述了jQuery实现form表单序列化转换为json对象功能。分享给大家供大家参考,具体如下: 做web前端开发时,需要ajax提交大量...jquery form序列化转换为json对象</title> [removed][removed] </scri

    jQuery实现form表单元素序列化为json对象的方法

    本文实例讲述了jQuery实现form...jQuery扩展——form序列化到json对象</title> <meta http-equiv=Content-Type content="text/html;charset=utf-8"> <script type="text/javascript" src="jquery-1.1

    form表单的序列化与反序列化

    基于jquery实现的form表单的序列化与反序列化。除了基本的form元素外,增加了easyui combobox的序列化与反序列化,其它类型的如有需要可自行实现。 下拉框会怎么生成以"_...反序列化:$("#form").loadJson(JsonObj)

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

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

    jquery序列化成对象js

    form提交的时候以json对象的方式传递,需要使用的转化工具。

    JQuery扩展包-多种序列化方式

    Jquery自带的序列化,仅对form表单进行序列化,有很大的局限性,现在对齐进行扩展可以进行任意的序列化,包括json格式,字符串格式、数组格式,数组时自动转化为字符串等。并可以根据开发需要,随时扩展自己想要的...

    jquery序列化form表单使用ajax提交后处理返回的json数据

    1、返回json字符串: 代码如下: /** 将一个字符串输出到浏览器 */  protected void writeJson(String json) {  PrintWriter pw = null;  try {  servletResponse.setContentType(“text/plain;charset=UTF-8”)...

    PHP的serialize序列化数据以及JSON格式化数据分析

    的内容是PHP的serialize序列化数据以及JSON格式化数据分析,需要的朋友可以参考下

    Jquery 组合form元素为json格式,asp.net反序列化

    2、后端ASP.NET用JavaScriptSerializer反序列化为对象实列。 3、好处:简化了前端数据读取与后端数据赋值。 代码如下:function GetJSONStr(class_name) { var a = []; //文本框 $(“.” + class_name).filter(“:...

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

    通过$(#form).serialize()可以获取到序列化的表单值字符串。 例如: a=1&b=2&c=3&d=4&e=5 通过$(#form).serializeArray()输出以数组形式序列化表单值。 [ {name: 'firstname', value: 'Hello'}, {name: '...

    dom-form-serializer:将表单字段序列化为JSON表示形式

    DOM表格序列化器 将表单字段序列化为JSON表示形式。 关于 该项目是一个分支,它不依赖于骨干网和jquery。 它旨在使将表单字段序列化为简单的JSON对象变得容易。 正在安装 npm install dom-form-serializer 基本用法...

    react-json-form-engine:从JSON构建闪电般的快速Web表单

    它还提供了一种机制,用于将对JSON的所有表单响应序列化以实现持久性。 反之亦然,因为任何形式都可以很容易地从历史数据中重新补充水分,然后返回其先前状态。 目录 表单引擎 表格定义 形式道具 栏位定义 栏位类型...

    【推荐下载】 C# asp.net MVC+EASYUI 视频教程

    特别是easyUI form序列化与反序列化,json传输和解析,数据列表批量post与接收,MVC框架等,这些技术是项目开发过程中经常会用到的,另外值得注意的是本套教程讲解的excel批量导入导出也很不错。

Global site tag (gtag.js) - Google Analytics