最近,我正在使用AJAX提交表单。
[研究最佳方法时,我看到一些使用jQuery#serialize()
的AJAX提交,而另一些使用FormData
的提交。例如。
[一个提交执行此操作:
data: $('form').serialize()
而另一个却做到了:
var formData = new FormData($('form')[0]);
data: formData
那么FormData
和jQuery#serialize()
有什么区别?
从使用角度来看,主要区别在于您不能序列化文件,只能序列化文件名....文件输入的value
。
[FormData
对象另一方面还包括文件(如果适用)。
[serialize()
也将在不支持FormData API的旧版浏览器中工作,例如IE <10
另一个重要的区别是对表单中的空输入字段的处理。
serialize()仅包含带有值的输入字段。键/值对中将缺少未选中的复选框或空的输入字段。因此,您的应用程序后端必须做一些簿记工作,才能将丢失的键解释为空值。
FormData将为您提供所有表单字段及其值的完整列表。即使它们是空的。