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

最近我使用AJAX提交表单。

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

一份提交的内容是:

 data: form.serialize() 

而另一个做了:

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

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

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

另一方面, FormData对象还包括文件(如果适用)。

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

参考FormData文档

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

 连载() 

仅包含具有值的输入字段。 键/值对中将缺少未选中的复选框或空输入字段。 因此,应用程序的后端必须进行一些簿记,以便将缺失的密钥解释为空值。

  FORMDATA 

将为您提供所有表单字段及其值的完整列表。 即使它们是空的。