form表单的序列化

一、form表单数据的序列化

//将form中的数据封装成Object对象
var getData=function($form){
		var o = {};
		var a = $form.serializeArray();
		$.each(a, function() {
			if (o[this.name] !== undefined) {
				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;
	}

2.对于有上传文件的form表单,使用new FormData($('#formId')[0])序列化表单

          $.ajax({
		        url:url,
		        type: 'POST',
		        cache: false,
		        data: new FormData($('#formId')[0]),//序列化form表单,可以包含文件上传的form表单
		        processData: false,
		        contentType: false,
		        dataType:"json",
		        beforeSend: function(){
		            uploading = true;
		        },
		        success : function(data) {
		         //提交成功或者失败的相应处理
		        }
		    });

 

3、对于无上传文件的form表单,可以使用new FormData($('#formId')[0])序列化表单,也可以使用serialize序列化表单,此处使用serialize序列化表单

 $.ajax({
		        url:url,
		        type: 'POST',
		        cache: false,
		        data: $("#formId").serialize(),//序列化form表单
		        processData: false,
		        contentType: false,
		        dataType:"json",
		        beforeSend: function(){
		            uploading = true;
		        },
		        success : function(data) {
		         //提交成功或者失败的相应处理
		        }
		    });


//使用这种方式提交遇到一个问题,后台一直拿不到提交的数据,不知道什么原因,是不是这个提交方式有问题,但是改成下面的提交方式就可以拿到提交的数据

var formData=$("#formId").serialize();//序列化form表单
$.post(url,formData,function(data){
    //提交成功或者失败的相应处理
});

4、还可以使用serializeArray序列化表单

 

 

5、$("formId").serialize()和 new FormData($('#formId')[0])的区别与联系:

$("formId").serialize()和 new FormData($('#formId')[0])都是序列化表单,实现表单的异步提交,但是二者有区别

(1)$("formId").serialize()只能序列化表单中的数据 ,比如文本框等input  select等的数据,不支持文件二进制流提交,也就是说不支持上传文件;

(2)new FormData($('#formId')[0])支持表单中文件二进制流形式提交,也就是支持上传文件,而且new FormData($('#formId')[0])不仅仅可以序列化文件,一样可以用作表单数据的序列化,也就是说FormData($('#formId')[0])包含了$("formId").serialize()的功能;

另外new FormData($('#formId')[0])可能对于jquery的版本有要求,,$("formId").serialize()时Jquery的方法

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值