Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con ajax y php asincronico

Estas en el tema de Problema con ajax y php asincronico en el foro de Javascript en Foros del Web. Buenas, vengo a comentarles un problema el cual me esta dejando seco de cerebro y no puedo solucionarlo. El codigo es el siguiente: Código: var ...
  #1 (permalink)  
Antiguo 15/05/2013, 15:14
Avatar de matandomuertos  
Fecha de Ingreso: mayo-2013
Ubicación: Kemi
Mensajes: 6
Antigüedad: 11 años
Puntos: 0
Problema con ajax y php asincronico

Buenas, vengo a comentarles un problema el cual me esta dejando seco de cerebro y no puedo solucionarlo.

El codigo es el siguiente:

Código:
var verificar;

function valuser(url, textbox){
  text = document.getElementById(textbox).value;
  page = url +"?text=" + text;

  if(text!=""){
    if(letrasusuario(text)){
        if(cantusuario(text)){
          conexion();

          if(req!=null){
            req.onreadystatechange = respuestauser;
            req.open('GET', page, true);
            req.send(null);
        }
      }
      else{
        window.document.registrar_usuario_form.user.value = "Debe tener mas de 4 caracteres";
      }
    }
    else{
      window.document.registrar_usuario_form.user.value = "Solo puede tener letras y numeros";
    }
  }
  alert("chau");
}


function respuestauser(){
 var respuesta = req.responseText;
   if(req.readyState==4){
   		if(req.status==200){   			
		    if (respuesta=="true"){
          window.document.registrar_usuario_form.user.value = "El usuario ya esta en uso";
          verificar=1;
          alert("usado");
        }
		    else{
          window.document.registrar_usuario_form.user.value = "Usuario disponible";
          verificar=0;
          alert("disponible");
        }
   		}
   }
   else{
      window.document.registrar_usuario_form.user.value = "Cargando...";
          verificar=0;
      alert("cargando");
   }
}
Well, como verán hay alertas simplemente para guiarme que esta andando mal y lo que descubrí es que el alert("chau"); se ejecuta antes de que se ejecute cualquiera de los otros alert.
El tema es que acá no importa demasiado, pero tengo que agregar (donde estaría el alert("chau"); un IF que se fije que valor tiene VERIFICAR y de ahí continué o no, esto ocasiona un problema ya que primero ejecuta el if y después todo lo otro por lo tanto me da cualquier resultado y prácticamente explota el script xD
Hay alguna forma de decirle que no siga hasta obtener que termine de ejecutar toda esa función? o de que no me ejecute primero lo del final?
La verdad me desconcertó bastante ya que debería ejecutar el código en orden ajja

Espero que me puedan ayudar y muchas gracias!!
  #2 (permalink)  
Antiguo 15/05/2013, 15:24
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con ajax y php asincronico

Hola:

Si tienes que esperar la respuesta Ajax, cuando es asincrona, debes usar el evento de respuesta (onreadystatechange)... si fuera sincrono se detendría la ejecución hasta obtener respuesta, pero de forma asincrona, la ejecución es secuencial sin esperar respuesta... el alert chau debería estar dentro de lo que programas como respuesta al evento...

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 15/05/2013, 16:58
Avatar de matandomuertos  
Fecha de Ingreso: mayo-2013
Ubicación: Kemi
Mensajes: 6
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con ajax y php asincronico

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Si tienes que esperar la respuesta Ajax, cuando es asincrona, debes usar el evento de respuesta (onreadystatechange)... si fuera sincrono se detendría la ejecución hasta obtener respuesta, pero de forma asincrona, la ejecución es secuencial sin esperar respuesta... el alert chau debería estar dentro de lo que programas como respuesta al evento...

Saludos
Ahhhhh ok, entonces necesito hacerlo de forma sincrónica. Voy a averiguar como se hace de esa forma y veré si resulta.

Muchas gracias!!
  #4 (permalink)  
Antiguo 15/05/2013, 23:44
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: Problema con ajax y php asincronico

Hola:

Cita:
Iniciado por matandomuertos Ver Mensaje
..., entonces necesito hacerlo de forma sincrónica...
Parece que no has entendido... no se trata de usar Ajax sincrono, y detener tu sistema hasta que llegue la respuesta, sino que si tu última acción para controlar que se ha ejecutado bien tu implementación Ajax, debes hacerlo en la función que asocias al evento onreadystatechange.

Ajax.onreadystatechange = function() {
// aquí el tratamiento de la respuesta si la hubiese...
alert("Chau"); //
}

Por cierto, es mejor poner una imagen al iniciar la petición Ajax, y en vez de la alerta, volver a esconder esa imagen.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #5 (permalink)  
Antiguo 16/05/2013, 20:20
Avatar de matandomuertos  
Fecha de Ingreso: mayo-2013
Ubicación: Kemi
Mensajes: 6
Antigüedad: 11 años
Puntos: 0
Respuesta: Problema con ajax y php asincronico

Cita:
Iniciado por caricatos Ver Mensaje
Hola:



Parece que no has entendido... no se trata de usar Ajax sincrono, y detener tu sistema hasta que llegue la respuesta, sino que si tu última acción para controlar que se ha ejecutado bien tu implementación Ajax, debes hacerlo en la función que asocias al evento onreadystatechange.

Ajax.onreadystatechange = function() {
// aquí el tratamiento de la respuesta si la hubiese...
alert("Chau"); //
}

Por cierto, es mejor poner una imagen al iniciar la petición Ajax, y en vez de la alerta, volver a esconder esa imagen.

Saludos
Ahhhh ahora comprendi lo que me querias decir. Muchas gracias y si, esta puesto un alerta para probar no lo piesno dejar asi, es molestisimo ajajaj xD

Etiquetas: ajax, php
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 00:49.