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

Recursion dentro del evento onreadystatechange (ajax)

Estas en el tema de Recursion dentro del evento onreadystatechange (ajax) en el foro de Frameworks JS en Foros del Web. Hola! :) Quiero enviar al servidor una sucesión de n datos, usando el modelo o tipo de datos de Cola. Ahora, al enviar el primer ...
  #1 (permalink)  
Antiguo 18/07/2010, 18:45
 
Fecha de Ingreso: marzo-2010
Ubicación: df
Mensajes: 58
Antigüedad: 14 años, 8 meses
Puntos: 5
Recursion dentro del evento onreadystatechange (ajax)

Hola! :)

Quiero enviar al servidor una sucesión de n datos, usando el modelo o tipo de datos de Cola. Ahora, al enviar el primer dato al servidor este envía la respuesta. Pero, al enviar la segunda solicitud jamas se recibe respuesta del servidor.

Me gustaria que alguien me dijera porque no funciona la recursion o la funcion send() cuando se pone dentro del evento onreadystatuschange o como resolver el problema de enviar un dato tras otro.

Dejo un código simplificado de lo que intento

Código Javascript:
Ver original
  1. <html>  
  2.   <head>  
  3.     <title>DOM Event Example</title>  
  4.     <script type="text/javascript">  
  5. function request(){
  6.     if (salida == 5 ){
  7.         alert ("saliendo" );
  8.     }else{
  9.         xhr.open ( "GET","appendBook.txt",true );
  10.         xhr.send (null);
  11.         alert ( salida ++ );
  12.     }  
  13. }
  14.  
  15. function load(){
  16.     xhr = new XMLHttpRequest();
  17.     salida = 0;
  18.    
  19.     xhr.onreadystatechange = function(){
  20.         if (    xhr.readyState == 4 &&
  21.                 xhr.status == 200){
  22.             request();
  23.         }          
  24.     }
  25.     request();
  26. }  
  27.    
  28.     </script>  
  29. </head>  
  30. <body onload="load();">  
  31. </body>
  32. </html>

Lo importante en el codigo es que deberian salir 5 alerts y unicamente sale 1. ¿por que o como lo soluciono?

Última edición por pollin14; 04/08/2010 a las 19:54 Razón: cambie "readystate" > "readyState"
  #2 (permalink)  
Antiguo 18/07/2010, 20:51
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Recursion dentro del evento onreadystatechange (ajax)

no lo miré mucho, pero no es readystate sino readyState
  #3 (permalink)  
Antiguo 23/07/2010, 21: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, 6 meses
Puntos: 1485
Respuesta: Recursion dentro del evento onreadystatechange (ajax)

anteriormente habia leido que no se debe usar el mismo objeto XMLHttpRequest para crear una nueva peticion. es decir, reutilizar un mismo objeto ya creado. nunca llegue a leer el detalle tecnico del por que. lo cierto es que si intentas hacer lo que estas haciendo -segun sea el navegador- debe generarte error (chrome), o se congela (iexplorer8), o solo realiza un numero limitado de peticiones (firefox). el error de chrome dice DOM Exception (11): INVALID_STATE_ERR el cual significa "se intento utilizar un objeto que no es, o dejo de ser, utilizable". a veces en ingles se entiende mejor, "If an attempt is made to use an object that is not, or is no longer, usable." viendo el draft de w3c, esta excepcion aparece cuando el orden la inicializacion no es la adecuada. por ejemplo si intentas invocar send antes de open. no me extrañaria que algo similar sucede aqui, y por eso no puedes hacer multiples peticiones con el mismo objeto. @edit, me olvide comentar. la unica forma que me parece posible reutilizar XMLHttpRequest es si restauras todos sus estados, y para ello tienes que invocar abort() antes de volver a iniciarlo con open().
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.

Última edición por zerokilled; 23/07/2010 a las 21:34
  #4 (permalink)  
Antiguo 04/08/2010, 19:51
 
Fecha de Ingreso: marzo-2010
Ubicación: df
Mensajes: 58
Antigüedad: 14 años, 8 meses
Puntos: 5
Respuesta: Recursion dentro del evento onreadystatechange (ajax)

Hola! :)

Gracias por las respuestas.
Si no se debe usar el mismo objeto XMLHttpRequest, para hacer mas de una peticion posiblemente sea el problema que tengo.
Voy a leer al respecto y probara utilizando el metodo abort.

Con respecto al error "readystate", es verdad es "readyState". Se me debio haber ido cuando simplifique mi codigo.

Gracias!

Etiquetas: ajax, onreadystatechange, recursion, send
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 17:04.