FormData与.serialize(),有什么区别?

时间:2015-11-02 02:08:02

标签: javascript jquery ajax form-data

最近我使用AJAX提交表单。

在研究最佳方法时,我使用.serialize()和其他人使用FormData查看了一些AJAX提交。例如。

一次提交就是这样做的:

data: form.serialize()

而另一个人做了:

var formData = new FormData($('form')[0]);
data: formData

那么FormData.serialize()之间有什么区别?

2 个答案:

答案 0 :(得分:33)

与使用角度的主要区别在于,您无法序列化文件,只能文件名....文件输入的value

另一方面,

FormData对象还包括文件(如果适用)。

同样serialize()适用于不支持FormData API的旧浏览器,例如IE< 10

参考FormData docs

答案 1 :(得分:1)

另一个重要的区别是表格中空输入字段的处理。

serialize()
仅包含带值的输入字段。键/值对中将缺少未选中的复选框或空输入字段。因此,应用程序的后端必须进行一些簿记,以便将缺失的密钥解释为空值。
FormData
会为您提供所有表单字段及其值的完整列表。即使它们是空的。