Foros del Web » Programando para Internet » Javascript »

Duda con una validación Ajax

Estas en el tema de Duda con una validación Ajax en el foro de Javascript en Foros del Web. Estoy teniendo problemas al momento de llamar a una funcion del tipo "legajoDisponible" (trabaja con ajax) dentro de otra función mayor "verificarDatosAlumno" La cuestión es ...
  #1 (permalink)  
Antiguo 29/07/2014, 06:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 132
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación Duda con una validación Ajax

Estoy teniendo problemas al momento de llamar a una funcion del tipo "legajoDisponible" (trabaja con ajax) dentro de otra función mayor "verificarDatosAlumno"

La cuestión es que tengo una estructura así en "verificarDatosAlumno":

if(legajo == '')
{
alert('ingrese el lejajo');
document.getElementById('legajo').focus();
return false;
}
else
{

if(!legajoDisponible(legajo ))
{
alert('el lejajo ingresado ya existe');
document.getElementById('legajo').focus();
return false;
}

}

... aqui otras validaciones...

primer problema:
legajoDisponible hace una petición via AJAX, es acá donde tengo el problema.
legajoDisponible llamará a su vez a la funcion callback, y no veo como puedo lograr que "legajoDisponible" me devuelva un valor booleano.

Por otra parte, legajoDisponible demorará algunos segundos en devolver un resultado, y las otras validaciones de abajo empiezan a ejecutarse siendo que "legajoDisponible" aún no terminó de procesar.

Como deberia manejar mi problema ?? siento que esta estructura de codigo no lleva a buen puerto.

desde ya agradecido.
  #2 (permalink)  
Antiguo 29/07/2014, 11:26
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años
Puntos: 834
Respuesta: Duda con una validación Ajax

Fijate si te sirve como orientación:
Código PHP:
<!DOCTYPE html>
<
html>
<
head>
<
meta  charset="utf-8" />
<
title></title>
<
script>
function 
http(){
    if(
typeof window.XMLHttpRequest!='undefined'){
        return new 
XMLHttpRequest();    
    }else{
        try{
            return new 
ActiveXObject('Microsoft.XMLHTTP');
        }catch(
e){
            
alert('Su navegador no soporta AJAX');
            return 
false;
        }    
    }    
}
function 
request(url,callback,params){
    var 
H=new http(),signo;
    if(!
H)return;
    
signo=url.indexOf('?')==-'?' :'&';
    
H.open('post',url+signo+new Date().getTime(),false);
    
H.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
    
H.onreadystatechange=function(){
        if(
H.readyState==&& H.status == 200){
            
callback(H.responseText);
            
H.abort();
            
H=null;
        }
    }
    var 
p='';
    for(var 
i in params){
        
p+='&'+i+'='+encodeURIComponent(params[i]);    
    }
    
H.send(p);
}
function 
verificarDatosAlumno(legajo){
    if(
legajo == ''){
        
alert('ingrese el lejajo');
        
document.getElementById('legajo').focus();
        return 
false
    }else{
          
request(
                
'test2.php',legajoDisponible,{'l':legajo}
          );
    }
}
function 
legajoDisponible(r){
    if(!
parseInt(r)){
        
alert('el lejajo ingresado ya existe');
        
document.getElementById('legajo').focus();
    }else{
        
alert('ok');
    }
}
</script>
</head>

<body>
<input name="legajo" type="text" id="legajo" value="123456"><input name="" type="button" value="verificar" onclick="verificarDatosAlumno(legajo.value)">
</body>
</html> 
test2.php:
Código PHP:
<?php 
if(isset($_POST['l']) && $_POST['l']=='123456'){
    echo 
0;
}else{
    echo 
1;
}
?>

Etiquetas: ajax, funcion, valor
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 09:26.