FormData对象

Posted Console

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了FormData对象相关的知识,希望对你有一定的参考价值。

FF4中增加了一个很有意思的对象,FormData。通常我们提交(使用submit button)时,会把form中的所有表格元素的name与value组成一个queryString,提交到后台。这用jQuery的方法来说,就是 serialize。但当我们使用Ajax提交时,这过程就要变成人工的了。因此,FormData对象的出现可以减少我们一些工作量。W3c草案提供了三种方案来获取或修改FormData。

1:创建一个空的FormData对象,然后再用append方法逐个添加键值对:

var data = new FormData();
data.append(uploadpic, $(#licensefile)[0].files[0]);//可以是文件
data.append(type,"license");

2:取得form元素对象,将它作为参数传入FormData对象中:

var form = document.getElementById("form");
var data= new FormData(form);

3 : 利用form元素对象的getFormData方法生成它:

var form =  document.getElementById("form");
var data= form.getFormData()

formdata是一个不透明的对象,现在暂时只有一个append可以操作,不能通过序列化手段得到其里面的内容。

最终可以将 data = new FormData()获取到的数据丢到ajax的data里面,作为数据传给后台;以下是我用FormData对象上传图片的例子:

html  file域:

 

<input type="file" id="licensefile" multiple="multiple">

 

jquery ajax结合FormData异步上传图片:

$("#licensefile").change(function(){
        popLayer.loading();
        var data = new FormData();
        data.append(uploadpic, $(#licensefile)[0].files[0]);
        data.append(type,"license");
        $.ajax({
            type: "post",
            url: "fileupload/uploadify!userUploadPhoto.action",
            processData: false,
            contentType: false,
            data: data,
            success: function(data){
                var _data = data
                if (data.errorCode=="000000") {
                    vm.licenseUrl = data.halfImgUrl;
                    storage.set("licenseUrl",data.halfImgUrl);
                    popLayer.destroy();
                };
            }
        });
    });

关于FormData更多的属性和查阅:https://developer.mozilla.org/zh-CN/docs/Web/API/FormData

 

 

 

参考其他人经验以及部分个人总结,如有侵权,请及时联系本人,QQ:435641688,谢谢

 

以上是关于FormData对象的主要内容,如果未能解决你的问题,请参考以下文章

JSON对象转成formData对象,formData对象转成JSON对象

JSON对象转成formData对象,formData对象转成JSON对象

前端向后端发送请求(FormData)

FormData的介绍

无法在客户端附加带有多个压缩图像的 FormData() 对象

[javascript] FormData 对象