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

48

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

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

其中一种提交方式如下:

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

而另一个则执行了:

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

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

2个回答

46

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

而另一方面,FormData对象也包括适用的文件。

serialize()在旧的浏览器(如IE < 10)中仍可使用,这些浏览器不支持FormData API。

参考 FormData文档


8

还有一个重要的区别在于表单中空输入字段的处理方式。

serialize()
只包含具有值的输入字段。未选中的复选框或空输入字段将在键/值对中缺失。因此,您的应用程序后端将需要进行一些簿记以将缺少的键解释为空值。
FormData
将为您提供完整的表单字段及其值列表。即使它们为空。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接