Foros del Web » Programando para Internet » Jquery »

Problema al retornar una función en AJAX (JQuery)

Estas en el tema de Problema al retornar una función en AJAX (JQuery) en el foro de Jquery en Foros del Web. Hola, en mi página web he creado un formulario en el que cuando rellenas cada campo de texto, un javascript dice si la información dada ...
  #1 (permalink)  
Antiguo 20/11/2009, 09:19
 
Fecha de Ingreso: junio-2007
Ubicación: Sabadell, BCN
Mensajes: 95
Antigüedad: 16 años, 10 meses
Puntos: 1
Pregunta Problema al retornar una función en AJAX (JQuery)

Hola, en mi página web he creado un formulario en el que cuando rellenas cada campo de texto, un javascript dice si la información dada es correcta o no.

Una de las comprobaciones es ver si el nombre de usuario introducido ya existe en la base de datos y al mostrarse la caja de texto, funciona perfectamente.

El problema viene cuando quiero retornar, si la función es verdadera o falsa, ya que además de comprobar el nombre de usuario, tambien se hacen otras comprobaciones.

La función JavaScript que uso es la siguiente:

Código PHP:
function verifyName(){
    var 
name document.register.name.value
    
var div_failed document.getElementById("name_register_failed")
    var 
div_success document.getElementById("name_register_success")
    
div_failed.style.display="none"
    
div_success.style.display="none"
    
var namevalid "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890-!¡ºª._="
    
var nameok "yes"
    
var nameexists "no"
    
var error 0
    
    
$.post("ajax_invoke/verify_register.php?act=name", { namename }, function(data){
        if(
data == "1"){
            
error 1
            div_failed
.innerHTML="Lo sentimos, este nombre ya está en uso"
        
}
        for (var 
i=0i<name.lengthi++) {
            
nametemp "" name.substring(ii+1);
            if (
namevalid.indexOf(nametemp) == "-1"nameok "no";
        }
        
        if(
name.length 14){
            
error 1
            div_failed
.innerHTML="Tu nombre no puede tener más de 14 caracteres"
        
}
        else if(
name == ""){
            
error 1
            div_failed
.innerHTML="Necesitas un nombre... ^^\'"
        
}
        else if(
nameok == "no"){
            
error 1
            div_failed
.innerHTML="Tu nombre tiene caracteres ilegales. Caracteres válidos:\nqwertyuiopasdfghjklzxcvbnm QWERTYUIOPASDFGHJKLZXCVBNM 1234567890-!¡ºª._="
        
}
        
        if(
error == 1){
            
div_failed.style.display="block"
            
return false;
        }
        else{
            
div_success.style.display="block"
            
return true;
        }
    });

Actualmente, si el nombre ya existe en la base de datos, aparece el cuadro de texto (mediante onblur) diciendo que el nombre ya existe, pero uso otra función para enviar el formulario que es la siguiente:

Código PHP:
function processRegister(){
    
verifyName()
    
verifyTibiaAccount()
    
verifyPass1()
    
verifyPass2()
    
verifyEmail1()
    
verifyEmail2()
    
verifyYear()
    
    if(
verifyName() && verifyPass1() && verifyPass2() && verifyEmail1() && verifyEmail2() && verifyYear()){
        
document.register.submit()
    }
    else{
        
window.alert('El formulario contiene errores. Por favor, corrígelos.');
    }

Dentro del if, siempre me devuelve true, aunque el nombre ya exista, cuando en este caso debería devolver false.

La idea quizás sería añadir un retardo, aunque este retardo no sería del todo fiable ya que dependería de algunas condiciones en ese momento. Entonces me gustaría que se retornara cuando JQuery hubiera terminado de preguntar a otro script PHP.

Gracias por la ayuda
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 13:00.