Foros del Web » Programando para Internet » Javascript »

Función no retorna valor en la primera ejecución

Estas en el tema de Función no retorna valor en la primera ejecución en el foro de Javascript en Foros del Web. Hola... Estoy haciendo un chequeo en un formulario, para saber si el usuario escrito existe o no. La parte del control funciona, con ajax se ...
  #1 (permalink)  
Antiguo 16/02/2011, 08:33
 
Fecha de Ingreso: enero-2010
Mensajes: 214
Antigüedad: 14 años, 3 meses
Puntos: 4
Función no retorna valor en la primera ejecución

Hola... Estoy haciendo un chequeo en un formulario, para saber si el usuario escrito existe o no. La parte del control funciona, con ajax se obtiene el valor "0" si el usuario ya existe... Pero al aplicarla en el formulario, con un onblur() en el campo e usuario, no me hace efecto en la primera tirada, tengo que escirbir y hacer dos clics en el campo para que la función haga efecto, ¿a qué puede deberse?

INPUT de username

Código HTML:
<input type="text" autocomplete="off" name="username" maxlength="20" class="form-content-big-input" onblur="if(validUser()=='0'){ this.style.border='1px solid red'; }else{ this.style.border='1px solid #093'; }" /> 
Función validUser()

Código Javascript:
Ver original
  1. function validUser(){
  2.       var act = new Date();
  3.       http[act] = createRequestObject();
  4.       http[act].open('post', '/inc/is_valid.php',true);
  5.       http[act].onreadystatechange = function() {
  6.       if (http[act].readyState == 4) {
  7.             if (http[act].status == 200 || http[act].status == 304) {
  8.                 reponsevalue=http[act].responseText;
  9.             }
  10.       }
  11. }
  12.     http[act].setRequestHeader('Content-Type','application/x-www-form-urlencoded');
  13.     http[act].send("user=" + document.forms['new-user'].elements['username'].value);
  14. return reponsevalue;
  15. }
__________________
Si tienes ganas de entretenerte un poco, echa un vistazo a Blubik Entretenimiento, por ver de qué va no pasa nada xD
  #2 (permalink)  
Antiguo 16/02/2011, 19:14
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años
Puntos: 1485
Respuesta: Función no retorna valor en la primera ejecución

buenas...

lo que pasa es que la peticion ajax es asincrona. significa que el proceso javascript continua independientemente si la peticion ajax se haya llevado a cabo o no. por tanto, para el momento en que la funcion devuelve reponsevalue, la peticion ajax no ha finalizado de modo que la funcion devuelve un string vacio. puedes replantear tu estrategia o hacer que la peticion sea sincrona. en la peticion sincrona javascript se detiene hasta que la peticion ajax finalice. para ello, en el tercer parametro de la inicializacion de ajax le pasas el boolean false.

__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #3 (permalink)  
Antiguo 17/02/2011, 08:36
 
Fecha de Ingreso: enero-2010
Mensajes: 214
Antigüedad: 14 años, 3 meses
Puntos: 4
Respuesta: Función no retorna valor en la primera ejecución

Gracias por tu valiosa ayuda, jamás había sabido el tipo de peticiones que existen en AJAX, he podido informarme.

Solo decir que, para que una petición síncrona funcione correctamente en todos los navegadores, debemos omitir en el código la parte que prepara la recepción de datos... onreadystatechange...

Dejo un poco de información: http://webdevstudio.wordpress.com/20...no-y-sincrono/

Un saludo, gracias.
__________________
Si tienes ganas de entretenerte un poco, echa un vistazo a Blubik Entretenimiento, por ver de qué va no pasa nada xD

Etiquetas: primera
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 20:11.