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