【问题标题】:FormData vs jQuery#serialize(), What is the difference?FormData vs jQuery#serialize(),有什么区别?
【发布时间】:2015-11-02 02:08:02
【问题描述】:

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

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

一个提交是这样做的:

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

而另一个做了:

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

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

【问题讨论】:

    标签: javascript jquery ajax form-data


    【解决方案1】:

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

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

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

    参考FormData docs

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 2014-05-09
        • 2012-05-12
        • 2011-05-23
        • 2013-02-11
        • 1970-01-01
        • 2014-07-01
        • 2021-07-16
        • 2013-03-18
        相关资源
        最近更新 更多