FormData vs .serialize(), в чем разница?
Недавно я отправлял форму с использованием AJAX.
При исследовании наилучшего метода я видел несколько представлений AJAX, используя .serialize()
и другие, используя FormData
. Например.
В одном представлении было сделано следующее:
data: form.serialize()
а другой:
var formData = new FormData($('form')[0]);
data: formData
Так в чем разница между FormData
и .serialize()
?
Ответы
Ответ 1
Основное отличие от точки использования заключается в том, что вы не можете сериализовать файлы, а только имена файлов.... value
ввода файла.
FormData
объект, с другой стороны, также включает файлы, если применимо.
Также serialize()
будет работать в старых браузерах, которые не поддерживают API FormData, например IE < 10
ссылка Документы FormData
Ответ 2
Еще одно важное различие заключается в обработке пустых полей ввода в формах.
serialize()
содержит только поля ввода со значением. В парах ключ/значение будут отсутствовать флажки или пустые поля ввода. Поэтому бэкэнд вашего приложения должен будет выполнять некоторые бухгалтерские операции, чтобы интерпретировать недостающие ключи как пустые значения.
FormData
предоставит вам полный список всех полей формы и их значений. Даже если они пусты.