Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Problemas con ajax.onreadystatechange

Estas en el tema de Problemas con ajax.onreadystatechange en el foro de Frameworks JS en Foros del Web. Hola amigos, tengo un problema y es el siguiente: tengo una funcion que carga modulos hasta 5 veces los mismos modulos, que tienen a su ...
  #1 (permalink)  
Antiguo 20/06/2006, 11:03
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Problemas con ajax.onreadystatechange

Hola amigos, tengo un problema y es el siguiente:

tengo una funcion que carga modulos hasta 5 veces los mismos modulos, que tienen a su vez submodulos, el problema ahora es que todo me funciona barbaro cuando utilizo en los combos onchange=carga_submodulo(args)

Pero cuando lo hago en el body onload se me carga solo un modulo y todos los demas quedan en readystate=1, probe con el siguiente codigo de abajo,
hice una funcion que me carga el modulo maestro por decirlo asi, las veces que le pase como parametro hasta 5, pero si le paso 3 por ejemplo
me carga el terecero barbaro, pero el 1 y 2 quedan en readystate=1
Alguien me puede explicar porque pasa esto?, cuando los cargo con un boton que ejecuta la accion de cargarModulo() me lo carga de diez

P/D: La funcion incremetal me va sumando desde 1 a 5 en un hidden, esto es para manejar los ids que tengo nada mas. De todas formas este no es el problema, el problema es el fucking onreadystatechange que no se va hasta 4

Código PHP:
<?
 
function cargaModulo()
{
 var 
inc=incremental();
 if(
inc<=5)
 {
   
ajax=nuevoAjax();
   
ajax.open("GET""debito_00.asp?id_layer="+inc+"&algo="+Math.random(), true);
   
ajax.onreadystatechange=function()
   { 
  if (
ajax.readyState==1)
  { 
   
document.getElementById("debito_"+inc+"_1").innerHTML="Cargando...";
  }
  if (
ajax.readyState==4)
  { 
   
document.getElementById("debito_"+inc+"_1").innerHTML=ajax.responseText;
  } 
   }
   
ajax.send(null);
 }
}
function 
cargaModulo_Mod(num)
{
 for (
i=1;i<=num;i++)
 {
  
cargaModulo();
 }
}
 
?>
Desde ya muchas gracias.-
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #2 (permalink)  
Antiguo 20/06/2006, 13:26
Avatar de NzO
NzO
 
Fecha de Ingreso: abril-2005
Mensajes: 153
Antigüedad: 19 años, 8 meses
Puntos: 3
Tendrias que crear un objeto XMLHttpRequest para cada carga de modulo, si lo haces todo de seguido claro. Creo xq no estoy muy seguro...
__________________
NzO=EnZo
isiAJAX & isiXML hechos el uno para el otro.
  #3 (permalink)  
Antiguo 20/06/2006, 13:42
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Pero si cada vez que ejecuto cargaModulo(); esa funcion crea una nueva instancia de ajax, en la parte que dice
ajax=nuevoAjax();

Si alguien sabe que puede ser, le agradeceria, y si es lo que me dicen arriba como tendria que hacer?
Muchas gracias
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
  #4 (permalink)  
Antiguo 20/06/2006, 14:03
 
Fecha de Ingreso: marzo-2002
Ubicación: Salta Capital - Actualmente estudiando en Córdoba
Mensajes: 430
Antigüedad: 22 años, 8 meses
Puntos: 0
Cita:
Iniciado por NzO
Tendrias que crear un objeto XMLHttpRequest para cada carga de modulo, si lo haces todo de seguido claro. Creo xq no estoy muy seguro...
Pues si, al parecer no se crea un nuevo objeto por eso me pasa lo que expuse arriba tenias razón NzO

Lo solucione de ésta forma, me faltaron dos lineas.

Código PHP:
<?
function cargaModulo()
{
 var 
ajax;
 var 
inc=incremental();
 if(
inc<=5)
 {
   
ajax=nuevoAjax();
   
ajax.open("GET""debito_00.asp?id_layer="+inc+"&algo="+Math.random(), true);
   
ajax.onreadystatechange=function()
   { 
  if (
ajax.readyState==1)
  { 
   
document.getElementById("debito_"+inc+"_1").innerHTML="Cargando...";
  }
  if (
ajax.readyState==4)
  { 
   
document.getElementById("debito_"+inc+"_1").innerHTML=ajax.responseText;
  } 
   }
   
ajax.send(null);
   
delete(ajax);
 }
}
?>
Son las líneas que tienen este color
Saludos y espero que le sirva a quien tenga el mismo problema, saludos!
__________________
Nada es imposible, con un poco de esfuerzo se logran las cosas.-
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 11:39.