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вы получите полный список всех ваших полей формы и их значений. Даже если они пусты.