问题
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.
FormDatawill 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