Tengo una función jQuery ajax y me gustaría obtener un formulario completo como datos de la publicación. Estamos constantemente actualizando el formulario, por lo que resulta tedioso actualizar constantemente las entradas del formulario que se deben enviar en la consulta.Pase el formulario completo como datos en la función jQuery Ajax
Respuesta
Hay una función que hace exactamente esto:
http://api.jquery.com/serialize/
var data = $('form').serialize();
$.post('url', data);
$ .post también puede llamar a una función en caso de éxito. $ .post ('url', data, function() {....}); – slm
nota: los campos de formulario deben tener el atributo de nombre establecido, usar solo ID no funciona como se documentó y como descubrí de primera mano. –
Genio, gracias !! –
Uso
var str = $("form").serialize();
Serializar un formato a una cadena de consulta, que podría ser enviada a un servidor en una petición Ajax.
En el uso general serialize()
en el elemento de formulario.
Tenga en cuenta que las <opciones> selectas se serializan con la misma clave, p. Ej.
<select id="foo" name="foo" multiple="multiple">
<option value="1">one</option>
<option value="2">two</option>
<option value="3">three</option>
</select>
resultará en una cadena de consulta que incluye múltiples ocurrencias de la misma parámetro de consulta:
[path]?foo=1&foo=2&foo=3&someotherparams...
que puede no ser lo que quiere en el back-end.
utilizo este JS código para reducir múltiples parámetros a una tecla separada por comas sola (sin vergüenza copiado de la respuesta de un comentarista en un hilo sobre en casa de John Resig):
function compress(data) {
data = data.replace(/([^&=]+=)([^&]*)(.*?)&\1([^&]*)/g, "$1$2,$4$3");
return /([^&=]+=).*?&\1/.test(data) ? compress(data) : data;
}
que convierte a la anterior en:
[path]?foo=1,2,3&someotherparams...
En su código JS que se dice así:
var inputs = compress($("#your-form").serialize());
Espero que ayude.
Eso es genial. Sí, debería estar separado por comas. –
Si está utilizando PHP, es trivial analizar una cadena de consulta mediante la función parse_url: http://us3.php.net/manual/en/function.parse-url.php – Lobos
Sé que esto es antiguo, pero ¿cómo sabe qué la (s) opción (es) se seleccionaron usando este método? – yardpenalty
serialize() no es una buena idea si desea enviar un formulario con el método de publicación. Por ejemplo, si quieres pasar un archivo a través de ajax, no va a funcionar.
la mejor solución es hacer una FormData y enviarlo:
var myform = document.getElementById("myform");
var fd = new FormData(myform);
$.ajax({
url: "example.php",
data: fd,
cache: false,
processData: false,
contentType: false,
type: 'POST',
success: function (dataofconfirm) {
// do something with the result
}
});
¿No funciona solo con HTML5? –
Sí, es compatible con navegadores actualizados, pero al usar serialización solo puede pasar cadenas. –
Tal vez deberías mencionar eso en tu respuesta –
Una buena opción jQuery para hacer esto es a través de FormData. ¡Este método también es adecuado para enviar archivos a través de un formulario!
<form id='test' method='post' enctype='multipart/form-data'>
<input type='text' name='testinput' id='testinput'>
<button type='submit'>submit</button>
</form>
Su función de envío de jQuery se vería así:
$('form#test').submit(function(){
var data = new FormData($('form#test')[ 0 ]);
$.ajax({
processData: false,
contentType: false,
data: data,
dataType: 'json',
type: $(this).attr('method');
url: 'yourapi.php',
success: function(feedback){
console.log("the feedback from your API: " + feedback);
}
});
para añadir datos a su forma se puede utilizar una entrada oculta en su forma, o lo añade al vuelo:
var data = new FormData($('form#test')[ 0 ]);
data.append('command', 'value_for_command');
<form id="add-item-form">
. . .
</form>
<script>
$('#add-item-form').submit(function (event) {
event.preventDefault();
var data = $('#add-item-form').serialize();
$.post("/Item/AddItem", data, function (response) {
. . .
});
});
</script>
sólo hay que publicar los datos. y el uso de la función jquery ajax establece los parámetros. Aquí hay un ejemplo.
<script>
$(function() {
$('form').on('submit', function (e) {
e.preventDefault();
$.ajax({
type: 'post',
url: 'your_complete url',
data: $('form').serialize(),
success: function (response) {
//$('form')[0].reset();
// $("#feedback").text(response);
if(response=="True") {
$('form')[0].reset();
$("#feedback").text("Your information has been stored.");
}
else
$("#feedback").text(" Some Error has occured Errror !!! ID duplicate");
}
});
});
});
</script>
- 1. jQuery - Pase el elemento a la función
- 2. Pase la matriz de datos a la función jQuery
- 3. Jquery pasando datos a la función ajax
- 4. jQuery $ .ajax(), pase los datos de éxito a la función separada
- 5. PHP: Pase la función anónima como argumento
- 6. función de pase como puntero de función
- 7. jQuery: función html() obtener datos antiguos en el formulario
- 8. La función jQuery ajax devuelve un error
- 9. ¿Cómo puedo usar la función jQuery $ .ajax para detener o permitir el envío de un formulario?
- 10. Cómo escaparse correctamente html enviado como datos en la función .ajax de jQuery
- 11. MVC 2 jQuery validación & ajax formulario
- 12. jQuery ajax-- devolver datos a la función de llamada
- 13. Pase una variable adicional al enviar un formulario usando jQuery
- 14. Presentación de formulario AJAX en jQuery Mobile
- 15. jquery ajax pase los datos que tienen múltiples valores con la misma clave
- 16. Completo Ajax PHP MVC Framework
- 17. .csv como datos en función del éxito ajax
- 18. Envíe un formulario como JSON (no AJAX)
- 19. jQuery Error de formulario AJAX. Cadena vacía
- 20. Enviar formulario usando AJAX y jQuery
- 21. ASP.Net MVC formulario Ajax con validación jQuery
- 22. Jquery datos ajax codificación
- 23. Datos variables en la llamada ajax JQUERY
- 24. Pasar varios objetos JSON como datos usando jQuery $ .ajax()
- 25. Cómo obtener datos de formulario como un objeto en jquery
- 26. jQuery datos de formulario POST
- 27. Validación de formulario usando jQuery-Ajax
- 28. $ .jquery ajax datos devueltos (json) aparece como 'indefinido'
- 29. jquery $ .ajax: pase un argumento adicional a la devolución de llamada 'éxito'
- 30. Jquery: llamada Ajax para servlet y obtener datos como JSON
Moh es correcto sobre FormData() y las imágenes. Pero para aclarar más. Es que la serialización solo funciona en cadenas (no en datos binarios). la función FormData() funciona con formularios que tienen el tipo de codificación establecido en "multipart/form-data". Detalles aquí: https://developer.mozilla.org/en-US/docs/Web/API/FormData –