Подтвердить что ты не робот

FormData vs .serialize(), в чем разница?

Недавно я отправлял форму с использованием AJAX.

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

В одном представлении было сделано следующее:

data: form.serialize()

а другой:

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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