FormData против serialize (), в чем разница?

недавно я отправлял форму с помощью AJAX.

в исследовании лучшего метода я видел некоторые представления AJAX, используя .serialize() и другие, используя FormData. Например.

одно представление сделало это:

data: form.serialize()

в то время как другие сделали:

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

так в чем разница между FormData и .serialize()?

2 ответов


основное отличие с точки зрения использования заключается в том, что вы не можете сериализовать файлы, только имена файлов....the value ввода файла.

FormData объект, с другой стороны, также включает файлы, если это применимо.

и serialize() будет работать в старых браузерах, которые не поддерживают API FormData, например IE

ссылка документы FormData


еще одним важным отличием является обработка пустого поля ввода в формах.

serialize()
содержит только поля ввода со значением. Непроверенные флажки или пустые поля ввода будут отсутствовать в парах ключ / значение. Поэтому бэкэнд вашего приложения должен будет вести учет, чтобы интерпретировать отсутствующие ключи как пустые значения.
FormData
вы получите полный список всех ваших полей формы и их значений. Даже если они пусты.