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

Solo funciona 1 vez - La ultima

Estas en el tema de Solo funciona 1 vez - La ultima en el foro de Frameworks JS en Foros del Web. Hola tengo este codigo JS que hace una llamada a Ajax / Php: function impuesto(art,imp) { for (i = 1, total = 2; i <= ...
  #1 (permalink)  
Antiguo 23/06/2009, 15:23
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años, 6 meses
Puntos: 0
Solo funciona 1 vez - La ultima

Hola tengo este codigo JS que hace una llamada a Ajax / Php:

function impuesto(art,imp) {
for (i = 1, total = 2; i <= total; i ++) {
var aleatorio=Math.random();
divResultado = document.getElementById('imp_'+i) ;
ajax=objetoAjax();
ajax.open("GET", "gestion/_ajax/mysql.php?opcion=impaso&aleatorio="+aleatorio+"&ar ticulo="+art+"&indice="+i);
ajax.onreadystatechange=function() { if (ajax.readyState==4) { divResultado.innerHTML = ajax.responseText ; } }
ajax.send(null);
alert (111);
}
}

Con el alert funciona corecctamente entregando los resultados en los div imp_1 y imp_2. Pero le saco el "alert ()" y ya no funciona y muestra solo imp_2.

Alguien sabe con que puedo reemplazar el alert()
  #2 (permalink)  
Antiguo 23/06/2009, 15:32
Avatar de hvelasco  
Fecha de Ingreso: mayo-2006
Mensajes: 25
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: Solo funciona 1 vez - La ultima

Hola creo que de esa forma no va ser posible ya que la petición aún no ha terminado y con el for haces otra petición si haber terminado con la primera,

te recomiendo que hagas una función recursiva y que la mandes a llamar asi misma cuando la petición sea "4", con una variable global puedes controlar los ciclos

saludos.
  #3 (permalink)  
Antiguo 23/06/2009, 17:39
 
Fecha de Ingreso: mayo-2009
Mensajes: 6
Antigüedad: 15 años, 6 meses
Puntos: 0
Respuesta: Solo funciona 1 vez - La ultima

Ok. Pero a que se puede deber que cuando despliega el alert - realiza los llamados de todos ?
  #4 (permalink)  
Antiguo 24/06/2009, 21:12
 
Fecha de Ingreso: junio-2009
Mensajes: 32
Antigüedad: 15 años, 5 meses
Puntos: 2
Respuesta: Solo funciona 1 vez - La ultima

retarda el resultado de la respuesta de ajax,
creo eso te puede ayudar
suerte!
  #5 (permalink)  
Antiguo 25/06/2009, 03:29
 
Fecha de Ingreso: julio-2008
Ubicación: Alcañiz-Teruel-España
Mensajes: 182
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Solo funciona 1 vez - La ultima

Buenas,

El problema es que una petición te machaca la otra y asi sucesibamente hasta la última que como no tiene ninguna por detras funciona correctamente.

En este post sucedía algo parecido y por el final logramos encontrar una función que establecía como una espece de cola de espera declarando para ello el objeto ajax en una vble global y asi rastrear su estado

Míratelo y adáptalo a tu código. Pienso que es lo que estas buscando

Llamadas Ajax Simultaneas

Vendría a ser algo asi,...

Código javascript:
Ver original
  1. var ajax=null; //vble global
  2.  
  3. //Funcion que crea el objeto ajax (Supongo que la tendrás tu)
  4. //....
  5. //
  6. //Funcion que realiza la petición AJAX
  7. function peticionAjax (url,divcontenido){
  8.     if (ajax==null) {
  9.       objDestino=document.getElementById(divcontenido)
  10.       ajax=objetoAjax();
  11.       ajax.open("GET", url, true);
  12.       ajax.onreadystatechange=function() {
  13.           if (ajax.readyState==4) {
  14.               objDestino.innerHTML = ajax.responseText
  15.               ajax = null
  16.           }
  17.       }
  18.       ajax.send(null)
  19.     }else{
  20.       setTimeout("peticionAjax ('"+url+"','"+divcontenido+"')",10)      
  21.     }
  22. }
  23.  
  24. function impuesto(art,imp) {
  25.   for (i = 1; total = 2; i <= total; i ++) {
  26.     var aleatorio=Math.random();
  27.     destino = 'imp_'+i;
  28.     peticionAjax ("gestion/_ajax/mysql.php?opcion=impaso&aleatorio="+aleatorio+"&ar ticulo="+art+"&indice="+i, destino);
  29.   }
  30. }

Saludos
__________________
Si quieres puedes y si puedes debes. Imposible is nothing!!!

Última edición por matak; 25/06/2009 a las 03:46
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:50.