Foros del Web » Programando para Internet » Javascript »

AJAX: prop. onreadystatechange antes del metodo open ???

Estas en el tema de AJAX: prop. onreadystatechange antes del metodo open ??? en el foro de Javascript en Foros del Web. Hice un ejercicio en el cual una petición en proceso muestra una imagen "loading..." mientras llega al estado 4. Tengo un pequeño inconveniente en la ...
  #1 (permalink)  
Antiguo 08/11/2013, 20:11
 
Fecha de Ingreso: febrero-2010
Mensajes: 132
Antigüedad: 14 años, 2 meses
Puntos: 0
Exclamación AJAX: prop. onreadystatechange antes del metodo open ???

Hice un ejercicio en el cual una petición en proceso muestra una imagen "loading..." mientras llega al estado 4.

Tengo un pequeño inconveniente en la primer peticion: la imagen de loading no aparece. en siguientes peticiones funciona OK.

Detecté como corregir el problema pero no entiendo el porque:
Si seteo la funcion de callback antes de configurar el metodo open funciona OK. Vice versa no.

asi me funciona OK:

xhr.onreadystatechange = callback;
xhr.open(....)

asi no:

xhr.open(....)
xhr.onreadystatechange = callback;

pense que era indistinto este orden... ya veo que no es asi.
alguien sabe a que se debe esto ??


mi funcion callback:

function callback()
{

if(xhr.readyState == 4)
{
if(xhr.status == 200)
{
document.getElementById('respuesta').innerHTML = xhr.responseText;
}
}
else
{
document.getElementById('respuesta').innerHTML = '<img src="loading.gif" alt="cargando..." />';
}

}
  #2 (permalink)  
Antiguo 09/11/2013, 06:49
Colaborador
 
Fecha de Ingreso: septiembre-2013
Ubicación: España
Mensajes: 3.648
Antigüedad: 10 años, 7 meses
Puntos: 578
Respuesta: AJAX: prop. onreadystatechange antes del metodo open ???

Evidentemente cuando abres la conexión con open() el evento ya no se puede establecer, por eso hay que hacerlo antes.

Etiquetas: ajax, funcion, html, metodo, open
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:51.