最近我使用AJAX提交表单。
在研究最佳方法时,我使用.serialize()
和其他人使用FormData
查看了一些AJAX提交。例如。
一次提交就是这样做的:
data: form.serialize()
而另一个人做了:
var formData = new FormData($('form')[0]);
data: formData
那么FormData
和.serialize()
之间有什么区别?
答案 0 :(得分:33)
与使用角度的主要区别在于,您无法序列化文件,只能文件名....文件输入的value
。
FormData
对象还包括文件(如果适用)。
同样serialize()
适用于不支持FormData API的旧浏览器,例如IE< 10
答案 1 :(得分:1)
另一个重要的区别是表格中空输入字段的处理。
serialize()仅包含带值的输入字段。键/值对中将缺少未选中的复选框或空输入字段。因此,应用程序的后端必须进行一些簿记,以便将缺失的密钥解释为空值。
FormData会为您提供所有表单字段及其值的完整列表。即使它们是空的。