`

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);
分享到:
评论

相关推荐

    用Javascript将form所有内容序列化和反序列化的例子。

    这个函数首先将序列化的字符串分割成单独的键值对,然后对每一对进行解码并添加到新的`FormData`对象中。 在实际应用中,还可以考虑以下情况: - **忽略未修改的表单字段**:在序列化时,可能只希望包括已更改的...

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

    总结来说,虽然jQuery本身不提供表单到JSON序列化的直接支持,但是通过结合serializeArray()方法、动态对象属性处理、以及自定义的序列化函数,我们可以实现这一功能。对于嵌套对象的处理特别需要注意属性名的分割和...

    c#下post multipart/form-data和JSON

    在C#中,我们可以使用`Newtonsoft.Json`库(Json.NET)或者内置的`System.Text.Json`来序列化对象为JSON字符串。 1. 序列化对象为JSON:首先,定义一个C#对象,然后使用Json.NET的`JsonConvert.SerializeObject`...

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

    jQuery提供了一个方便的方法来序列化表单数据,并将其转换为JSON对象,这在使用Ajax提交表单时特别有用。本文将通过一个示例来讲解如何使用jQuery实现这一功能。 首先,我们需要一个HTML表单,如下所示: ```html ...

    c#post multipart/form-data和JSON数据

    在C#中,可以使用Newtonsoft.Json库(通常称为Json.NET)来序列化和反序列化JSON数据。发送JSON数据的POST请求可以这样实现: ```csharp using Newtonsoft.Json; using System.Net.Http; var client = new ...

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

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

    jQuery扩展将复杂form表单转成json对象

    在JavaScript开发中,jQuery库是广泛使用的工具,它简化了DOM操作、事件处理以及Ajax交互。在处理HTML表单(form)数据...通过自定义jQuery插件,我们可以根据需求定制化表单序列化的逻辑,以适应各种复杂的业务场景。

    C#对象序列化反序列化保存与读取和对象直接保存与读取

    本主题将深入探讨如何在Windows Forms(WF)环境中,利用C#语言进行对象的直接保存与读取,以及通过对象序列化和反序列化的方式实现对象的保存与恢复。 首先,我们来理解什么是对象的直接保存与读取。在C#中,可以...

    序列化和反序列化的封装类

    在提供的文件`FrmOption.cs`中,可能包含了某个窗体(Form)的选项配置类,这个类可能利用了上述的`SerializationHelper`或其他类似的封装类来进行序列化和反序列化,以保存和加载用户自定义的设置。通过这种方式,...

    将表单序列化为json对象

    1. **Ajax请求**:在发起Ajax请求时,可以直接将序列化后的JSON对象作为参数发送。 2. **表单验证**:在客户端进行表单验证时,可以利用JSON对象快速访问各个字段的值。 3. **数据存储**:在本地存储表单数据时,...

    C#序列化反序列化实例

    C#提供了多种序列化方式,包括XML序列化、JSON序列化和二进制序列化。例如,使用`XmlSerializer`类可以将对象转换为XML格式,而`DataContractSerializer`或`Json.NET`库则可用于JSON序列化。 反序列化则是相反的...

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

    本文将介绍如何利用jQuery序列化form表单数据为JSON对象的实现方法,并提供实例代码来加深理解。 在Web开发中,表单提交是一个常见的操作,通常需要把表单中的数据转换成适合网络传输的格式。HTML表单通过表单元素...

    c#模拟post发送json和multipart/form-data格式

    反序列化则使用`JsonConvert.DeserializeObject()`。 例如: ```csharp using Newtonsoft.Json; public class User { public string Name { get; set; } public int Age { get; set; } } User user = new User...

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

    接下来,我们将创建一个空对象`o`来存储序列化的JSON数据: ```javascript var o = {}; ``` 然后,我们使用`jQuery.each()`遍历由`serializeArray()`返回的数组: ```javascript jQuery.each(fields, function(i,...

    jquery序列化成对象js

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

    winform 序列化

    序列化是将对象的状态转换为可持久化的格式(如XML、JSON或二进制),以便于存储或传输。反序列化则是相反的过程,即从这种格式恢复对象。在.NET Framework中,.NET序列化框架提供了实现这一过程的工具和类。 二、...

    jquery自动将form表单封装成json的具体实现

    这些字段被放置在一个`<form>`元素内,并且每个输入元素都有一个`name`属性,这是序列化成键值对的关键。 接下来,我们使用jQuery的`.serializeArray()`方法来自动将表单中的数据转换成JSON对象。`.serializeArray...

    C#序列化(二)二进制序列化的案例 c#经典案例.pdf

    在C#编程中,序列化是一个重要的概念,它允许我们将对象的状态转换为可存储或可传输的数据格式。本文主要探讨的是二进制...在实际开发中,根据项目需求,还可以考虑使用其他序列化技术,如XML序列化、JSON序列化等。

Global site tag (gtag.js) - Google Analytics