Ver Mensaje Individual
  #1 (permalink)  
Antiguo 13/08/2014, 18:40
Anonimo12
 
Fecha de Ingreso: abril-2009
Ubicación: En foros del web, normalmente en Web general, HTML y CSS.
Mensajes: 258
Antigüedad: 15 años, 8 meses
Puntos: 3
No recargar la web tras petición AJAX

Buenas:

Estoy creando un formulario que, antes de enviar nada, valida los datos con Javascript. Hago varias validaciones correctamente, así que hasta ahi todo bien.

El tema está en que también tengo que comprobar si el correo que ha introducido el usuario ya se encuentra en la base de datos, por tanto se debe hacer con AJAX porque tengo que ejecutar un fichero PHP sin recargar la web. Este es el código:

Código Javascript:
Ver original
  1. function validarCorreo() {
  2.  
  3.     var email = document.getElementsByName("c_email")[0].value; //Obtengo el email que ha introducido el usuario
  4.  
  5.             $.ajax({
  6.                 type: "post", //Petición por POST
  7.                 url: "./account/checkCreateErrors.php", //Fichero PHP que necesito ejecutar para comprobar si el email ya existe
  8.                 data: { "c_email" : email }, //Le envío el email como parámetro
  9.                 success: function(result) { //Tras obtener el resultado ->
  10.                     if(result == "exist") { //Si el correo existe muestro un mensaje de error y devuelvo false para que no se envíe el formulario
  11.                         var p = document.getElementsByName("c_error_email");
  12.                         p[0].style.height = "auto";
  13.                         p[0].style.opacity = 1;
  14.                         return false;
  15.                     }
  16.                     else { //Si no existe oculto el mensaje de error
  17.                         var p = document.getElementsByName("c_error_email");
  18.                         p[0].style.height = "0px";
  19.                         p[0].style.opacity = 0;                    
  20.                     }
  21.                 }
  22.             });
  23. }

Se hace todo a la perfección (tanto la comprobación como la obtención del resultado y la impresión del mensaje de error), el único inconveniente es que ¡pase lo que pase me recarga la web!.

Como podéis observar, si el correo ya existe se devuelve "false" lo cual lo recibe el submit del formulario:

Código HTML:
Ver original
  1. <input name="enter" type="submit" value="Enter" onclick="return checkCreateErrors()">

En todas las validaciones, si recibe "false", no hace nada y por tanto no se recarga la web. Pero en el caso de esta que utilizo AJAX (no sé si tendrá algo que ver), devuelva lo que devuelva siempre se ejecuta el submit.

Seguro que es una chorrada pero no lo veo. Un saludo.
__________________
¿Por qué Anónimo?, porque como está el mundo no podemos considerarnos humanos...