Tengo una función jQuery ajax y me gustaría enviar un formulario completo como datos de publicación. Actualizamos constantemente el formulario, por lo que resulta tedioso actualizar constantemente las entradas del formulario que deben enviarse en la solicitud.
155
Respuestas:
Hay una función que hace exactamente esto:
http://api.jquery.com/serialize/
fuente
person[0].firstName
person[0].lastName
person[1].firstName
person[1].lastName
<input name="person[1].lastName">
?serialize () no es una buena idea si desea enviar un formulario con el método de publicación. Por ejemplo, si desea pasar un archivo a través de ajax, no funcionará.
Supongamos que tenemos un formulario con esta identificación: "myform".
la mejor solución es hacer un FormData y enviarlo:
fuente
var
en 2016!form.serialize()
pero simplemente no funcionó para cargar archivos.new FormData(this)
trabajó bienEn general uso
serialize()
en el elemento de formulario.Tenga en cuenta que varias opciones de <seleccionar> se serializan bajo la misma clave, p. Ej.
dará como resultado una cadena de consulta que incluye múltiples ocurrencias del mismo parámetro de consulta:
que puede no ser lo que quieres en el backend.
Utilizo este código JS para reducir múltiples parámetros a una sola tecla separada por comas (copiada descaradamente de la respuesta de un comentarista en un hilo en el lugar de John Resig):
que convierte lo anterior en:
En su código JS lo llamaría así:
Espero que ayude.
fuente
Utilizar
serializar ()
Serialice un formulario a una cadena de consulta, que podría enviarse a un servidor en una solicitud de Ajax.
fuente
Una buena opción de jQuery para hacer esto es a través de FormData . ¡Este método también es adecuado al enviar archivos a través de un formulario!
Su función de envío en jQuery se vería así:
Para agregar datos a su formulario, puede usar una entrada oculta en su formulario o agregarla sobre la marcha:
fuente
url: $(this).attr('action'),
en su lugarSolo tienes que publicar los datos. y Uso de los parámetros establecidos de la función jquery ajax. Aquí hay un ejemplo.
fuente
Las otras soluciones no funcionaron para mí. Tal vez el viejo DOCTYPE en el proyecto en el que estoy trabajando impide las opciones HTML5.
Mi solución:
js:
fuente