JavaScript 之 FormData对象

版权声明:本文为博主原创文章,转载请注明作者和出处,如有错误,望不吝赐教。 https://blog.csdn.net/weixin_41888813/article/details/83863197

摘要 通常我们提交(使用submit button)时,会把form中的所有表格元素的name与value组成一个queryString,提交到后台。这用jQuery的方法来说,就是serialize。但当我们使用Ajax提交时,这过程就要变成人工的了。因此,FormData对象的出现可以减少我们一些工作量。

想得到一个FormData对象:

var formdata = new FormData();

W3c草案提供了三种方案来获取或修改FormData。

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

var formdata = new FormData();
formdata.append("name""呵呵");
formdata.append("url""http://www.baidu.com/");

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

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

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

var formobj =  document.getElementById("form");
var formdata = formobj.getFormData()

利用Formdata对象,我们可以使用原生js通过ajax实现异步上传图片,当然,现在已经有jquery的批量上传插件了,实现原理就是利用了Formdata。


具体实例1:

var $element=$("#form");  //获得表单对象
var formData=$element.getFormData() //序列化表单对象
或者 var formData=new FormData($element); //序列化表单对象

formData.append('name','张三'); //还可以向表单数据里加额外数据
formData.append('sex','男');
ajax提交
$.ajax({
   url:'test';
   data:formData;
})

具体实例2:

使用 MultipartFile 结合 (formData对象、Blob对象) 实现图片上传功能简介

FormData 相关方法源码:

append方法第二个参数可以接收一个Blob对象

interface FormData {
    append(name: string, value: string | Blob, fileName?: string): void;
    delete(name: string): void;
    get(name: string): FormDataEntryValue | null;
    getAll(name: string): FormDataEntryValue[];
    has(name: string): boolean;
    set(name: string, value: string | Blob, fileName?: string): void;
}

来源于:

https://blog.csdn.net/baicp3/article/details/45287547

https://blog.csdn.net/csdnzhangtao5/article/details/53184858

猜你喜欢

转载自blog.csdn.net/weixin_41888813/article/details/83863197