FormData vs .serialize(), What is the difference?

岁酱吖の 提交于 2019-12-03 10:31:54

问题


Recently I was submitting a form using AJAX.

In researching the best method I saw some AJAX submissions using .serialize() and others using FormData. For example.

One submission did this:

data: form.serialize()

while the other did:

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

So what is the difference between FormData and .serialize()?


回答1:


The main difference from a usage standpoint is that you can't serialize files, only file names....the value of a file input.

FormData object on the other hand also includes files if applicable.

Also serialize() will work in older browsers that don't support the FormData API for example IE < 10

reference FormData docs




回答2:


One more important difference is the treatment of empty input-fields in forms.

serialize()
only contains input-fields with a value. Unchecked check-boxes or empty input-fields will be missing in the key/value pairs. Therefore the backend of your application will have to do some book-keeping in order to interpret missing keys as empty values.
FormData
will get you a complete list of all your form fields and their values. Even if they are empty.

来源:https://stackoverflow.com/questions/33469684/formdata-vs-serialize-what-is-the-difference

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!