Ver Mensaje Individual
  #1 (permalink)  
Antiguo 31/10/2008, 05:13
syscover
 
Fecha de Ingreso: abril-2008
Ubicación: Madrid
Mensajes: 22
Antigüedad: 16 años, 8 meses
Puntos: 1
Problema con validar formulario con AJAX

Buenos días

Lo primero daros las gracias por dedicarme unos segundos.

Estoy haciendo una validación de un formulario para el registro de un usuario que consulta a la base de datos si existe el usuario introducido.

La idea es la siguiente:

Código lenguaje:
Ver original
  1. function insestaUser(){
  2.  
  3.   //comprobamos si existe el usuario llamando a la funcion existeUsurio
  4.   if(existeUsurio(document.getElementById("f6").value)){
  5.     alert("el usuario y aexiste");
  6.   }else{
  7.     document.getElementById("form1").submit();
  8.     close();
  9.   }
  10. }
  11.  
  12. function existeUsurio(user){
  13.   _objetus=http_request();
  14.   //<![CDATA[
  15.   _values_send="accion=buscaUsuario&user="+user;
  16.   //]]>
  17.   _URL_="../ajax/ajax.usuario.php?";
  18.   _objetus.open("GET",_URL_+"&"+_values_send,true);
  19.   _objetus.onreadystatechange=function(){
  20.       if (_objetus.readyState==4){
  21.           if(_objetus.status==200){
  22.               var vari=_objetus.responseText;
  23.               if(vari > 0){
  24.                   return true;
  25.               }else{
  26.                   return false;
  27.               }
  28.           }
  29.       }else{
  30.           window.alert('¡Error! falla-['+_objetus.status+']-'+_objetus.responseXML);
  31.       }
  32.   }
  33.   _objetus.send(null);
  34. }

El problema que tengo que al llamar a la función existeUsurio no espera a que termine de ejecutarse la funcion ajax, continua la comprovación "existeUsurio" como si reciviese un true, somo si al entar en el función de ajax se creara otro hilo de ejecución.
Imagino que el problema será a que la función tiene que esperar a que el evento onreadystatechange sea llamado.
¿Habría posibilidad que el if esperase a la respuesta del ajax?

Saludos

Última edición por syscover; 31/10/2008 a las 05:22