Ver Mensaje Individual
  #14 (permalink)  
Antiguo 22/04/2018, 08:53
sentoki79
 
Fecha de Ingreso: octubre-2013
Mensajes: 79
Antigüedad: 10 años, 6 meses
Puntos: 1
Respuesta: Problema al devolver resultado de una funcion

Buenas de nuevo,


perdón rectifico no está conseguido

No lo habia comprobado del todo bien y mejorando el codigo veo que no envia el formulario aunque el usuario este libre por que la funcion nuevoUsuario(nombreUsuario) devuelve otra vez undefined.

Pego el codigo como lo tengo actualmente:
Código:
function nuevoUsuario(nombre){
 var flagNombre = false
    verificarDisponibilidad(nombre).then(function(respuesta){
       
        if (respuesta==1){ //Cero equivale a "false"
        var muestraOk=document.getElementById("muestraOk")
        muestraOk.innerHTML="El nombre de usuario esta libre"
            flagNombre = true
            return flagNombre
        }
        else{
             var muestraOk=document.getElementById("muestraOk")
        muestraOk.innerHTML=""
            alert("El nombre ya se encuentra registrado. Por favor vuelva a introducir un nuevo nombre de usuario para comprobar si esta libre. ");
        return flagNombre
        }
    });
}
 


function verificarDisponibilidad(nombre){
    return new Promise(function(exito, error){
        var xhr=nuevoAjax()
        var datos=  "usuario="+nombre
        xhr.open("POST", "http://localhost:8080/Front/CompruebaNombreUsuario", true);
        xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
        xhr.send(datos);
        xhr.addEventListener("load", function(){
            if (this.status == 200){
                exito(this.responseText); //La respuesta será el número de coincidencias del nombre en la base de datos
            }
        }, false);
    });
}



function registrarse() {

 var formulario = validarFormulario()
 var compruebaNombreUsuario=nuevoUsuario(nombreUsuario);
 alert(compruebaNombreUsuario)


    //se comprueba de si no han habido errores en el formulario se prepara el envio de datos al servidor
    if (formulario == true&&compruebaNombreUsuario==true) {



        //datos que se recogen del metodo de la clase usuario para el envio por POST:
       var datos = usuario.enviaInfo();
   

       var xhr = nuevoAjax();
       var url = "Registro";
       xhr.open("POST",url, true );
       xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
       xhr.send(datos);
    
   }
Bueno la funcion registrarse() esta vez la he simplificado a lo importante para el problema.
El alert(compruebaNombreUsuario) es el que devuelve undefined y por eso no cumple el if y no envia el formulario.


De nuevo gracias por las soluciones, me parece que se vuelve al punto donde empezó el mensaje en este tema al estilo un bucle while jeje


Gracias y saludos

Última edición por sentoki79; 22/04/2018 a las 09:09