Foros del Web » Programando para Internet » Jquery »

[SOLUCIONADO] Error con .submit() en AJAX

Estas en el tema de Error con .submit() en AJAX en el foro de Jquery en Foros del Web. Hola! Utilizo la función que aportan en esta página para conocer el tipo de error relacionado con AJAX. Intento usar la función .submit() pero no ...
  #1 (permalink)  
Antiguo 02/05/2015, 16:44
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Pregunta Error con .submit() en AJAX

Hola!

Utilizo la función que aportan en esta página para conocer el tipo de error relacionado con AJAX.

Intento usar la función .submit() pero no me funciona. El siguiente código me manda el error 0, según la función que aporta la página antes mencionada. O sea, un error de Not connect: Verify Network.

Código HTML:
Ver original
  1. <form id="mi_formulario">
  2.         <input id="nombre" name="nombre">
  3.         <input id="email"  name="email">
  4.         <br>
  5.         <input type="submit" value="Enviar">
  6.     </form>
  7.  
  8.     <div id="cajaRespuesta"></div>

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.             $("#mi_formulario").submit(function() {
  3.                 var datosSerializados = $("#mi_formulario").serialize();
  4.                 alert(datosSerializados);
  5.  
  6.                 $.ajax({
  7.                     type: "POST",
  8.                     data: datosSerializados,
  9.                     url:  "process.php",
  10.                     success: function(response) {
  11.                         $("#cajaRespuesta").html(response);
  12.                     }
  13.                 });
  14.             });
  15.         });

Datos del process.php
Código PHP:
    $nombre $_POST["nombre"];
    
$email  $_POST["email"];
    
$respuesta $nombre " " $email;    
    
sleep(2);
    echo 
"Respuesta AJAX, OK\nDatos introducidos: " $respuesta
¿Alguna idea?

Saludos!
  #2 (permalink)  
Antiguo 02/05/2015, 18:41
Avatar de Elvixx10  
Fecha de Ingreso: agosto-2012
Mensajes: 40
Antigüedad: 11 años, 8 meses
Puntos: 1
Prueba con esto $(document).on("submit", "#id", function(){
//ajax

return false;
});
  #3 (permalink)  
Antiguo 03/05/2015, 03:24
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Error con .submit() en AJAX

Efectivamente debes prevenir que el formulario se envíe.

Código Javascript:
Ver original
  1. $(document).ready(function() {
  2.             $("#mi_formulario").submit(function(e) {
  3.                 e.preventDefault(); // Cancelar el evento
  4.                 var datosSerializados = $("#mi_formulario").serialize();
  5.                 alert(datosSerializados);
  6.  
  7.                 $.ajax({
  8.                     type: "POST",
  9.                     data: datosSerializados,
  10.                     url:  "process.php",
  11.                     success: function(response) {
  12.                         $("#cajaRespuesta").html(response);
  13.                     }
  14.                 });
  15.             });
  16.         });
  #4 (permalink)  
Antiguo 03/05/2015, 14:00
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Sonrisa Respuesta: Error con .submit() en AJAX

Cita:
Iniciado por PHPeros Ver Mensaje
Efectivamente debes prevenir que el formulario se envíe...
Ok, ok. Funciona ok.

Ayúdame a entender, maestro PHPeros.

Entonces, si no se hace preventDefault al submit, entonces se envía el formulario, se actualiza el documento y por tanto no se ve la respuesta en pantalla, porque el AJAX quedó atrás, antes que la página se actualizara.

Dos preguntas:

1) Pero aún así, ¿no debería verse al menos por un instante la respuesta en pantalla, justo antes que se refresque la pantalla?

2) Si tiene que cancelarse la acción por defecto del submit, ¿tiene sentido un input type=submit en un formulario que trabajará con AJAX?

Con respecto a la segunda pregunta. Si no tiene sentido, entonces por qué jQuery se molesta en crear una función .submit() para manejar inputs tipo submit? Y si sí tienen sentido los inputs tipo submit dentro de formularios para AJAX, ¿por qué hay que hacerles preventDefault, ya que, en este caso, mejor utilizo un <button>?

Saludos!
  #5 (permalink)  
Antiguo 04/05/2015, 09:34
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: Error con .submit() en AJAX

¿Entonces ya lo solucionaste?

Cita:
Entonces, si no se hace preventDefault al submit, entonces se envía el formulario, se actualiza el documento y por tanto no se ve la respuesta en pantalla, porque el AJAX quedó atrás, antes que la página se actualizara.
Exacto.

Cita:
Pero aún así, ¿no debería verse al menos por un instante la respuesta en pantalla, justo antes que se refresque la pantalla?
Supongo que es inapreciable, ya que el envío se realiza al terminar la ejecución del script, cosa que lleva una décima de segundo.

Cita:
Si tiene que cancelarse la acción por defecto del submit, ¿tiene sentido un input type=submit en un formulario que trabajará con AJAX?
Tiene que cancelarse porque en este caso, estás reemplazando el envio normal de un formulario (GET o POST), por una petición asíncrona vía AJAX.

Cita:
¿en este caso, mejor utilizo un <button>?
También podrías usar un simple botón, pero entonces tendrías que trabajar con el evento onclick del botón y no con el onsubmit del formulario. Dos eventos muy distintos.
  #6 (permalink)  
Antiguo 04/05/2015, 17:41
Avatar de berkeleyPunk  
Fecha de Ingreso: febrero-2013
Ubicación: México :C
Mensajes: 565
Antigüedad: 11 años, 2 meses
Puntos: 22
Respuesta: Error con .submit() en AJAX

Cita:
Iniciado por PHPeros Ver Mensaje
¿Entonces ya lo solucionaste? ...
Sí, lo solucioné con el preventDefault.

Como siempre, muchas gracias y hasta pronto.

Etiquetas: ajax
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:17.