FormDataAPI

FormDataAPI出现之前,我们页面上的表单必须实际存在于HTML中。但有时,我们希望能手动构造一个表单对象,FormDataAPI能够解决这个问题。

除此之外,借助于FormDataAPI手动构造的表单,我们也可以轻松实现ajax文件上传,而不需要借助iframe等方式了。

构造表单

下面例子中,我们手动构造了一个表单,包含一个键值对表单项username,以及一个文件表单项userFile

var userFile = document.getElementById('user-file');

var formData = new FormData();
formData.append("username", "Tom");
formData.append("userFile", userFile.files[0]);

实际上代码非常简单,我们使用new初始化FormData()对象后,然后使用append()添加表单项就行了。

使用JQuery发送FormData数据

FormData是xhr2引入的一个功能,JQuery对此支持不太友好。要想使用JQuery发送FormData对象,我们需要如下设置:

$.ajax({
    type: 'POST',
    async: true,
    url: '/',
    data: formData,
    contentType: false,
    processData: false,
    dataType: 'json',
    success: function (msg)
    {
        console.log(msg);
    }
});

注意contentTypeprocessData我们设置为了false,否则JQuery会尝试把发送的数据转为字符串报错。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap