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
将为您提供所有表单字段及其值的完整列表。 即使它们是空的。