FormData vs jQuery#serialize(),有什么区别?

问题描述 投票:34回答:2

最近,我正在使用AJAX提交表单。

[研究最佳方法时,我看到一些使用jQuery#serialize()的AJAX提交,而另一些使用FormData的提交。例如。

[一个提交执行此操作:

data: $('form').serialize()

而另一个却做到了:

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

那么FormDatajQuery#serialize()有什么区别?

javascript jquery ajax form-data
2个回答
36
投票

从使用角度来看,主要区别在于您不能序列化文件,只能序列化文件名....文件输入的value

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

[serialize()也将在不支持FormData API的旧版浏览器中工作,例如IE <10

参考FormData docs


1
投票

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

serialize()
仅包含带有值的输入字段。键/值对中将缺少未选中的复选框或空的输入字段。因此,您的应用程序后端必须做一些簿记工作,才能将丢失的键解释为空值。
FormData
将为您提供所有表单字段及其值的完整列表。即使它们是空的。
© www.soinside.com 2019 - 2024. All rights reserved.