FormData vs jQuery#serialize(), ¿cuál es la diferencia?

1 minuto de lectura

avatar de usuario
L84

Recientemente estaba enviando un formulario usando AJAX.

Al investigar el mejor método, vi algunos envíos de AJAX usando jQuery#serialize() y otros usando FormData. Por ejemplo.

Una presentación hizo esto:

data: $('form').serialize()

mientras que el otro lo hizo:

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

Entonces, ¿cuál es la diferencia entre FormData y jQuery#serialize()?

avatar de usuario
charlietfl

La principal diferencia desde el punto de vista del uso es que no puede serializar archivos, solo nombres de archivo… value de una entrada de archivo.

FormData El objeto, por otro lado, también incluye archivos, si corresponde.

También serialize() funcionará en navegadores más antiguos que no admitan la API de FormData, por ejemplo, IE

referencia Documentos de FormData

Otra diferencia importante es el tratamiento de los campos de entrada vacíos en los formularios.

serialize()

solo contiene campos de entrada con un valor. Faltarán casillas de verificación sin marcar o campos de entrada vacíos en los pares clave/valor. Por lo tanto, el back-end de su aplicación tendrá que hacer un poco de contabilidad para interpretar las claves que faltan como valores vacíos.

FormData

obtendrá una lista completa de todos los campos de su formulario y sus valores. Incluso si están vacíos.

¿Ha sido útil esta solución?