在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()
添加表单项就行了。
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);
}
});
注意contentType
和processData
我们设置为了false
,否则JQuery会尝试把发送的数据转为字符串报错。