Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con readyState de Ajax

Estas en el tema de Problema con readyState de Ajax en el foro de Javascript en Foros del Web. Saludos a todos lo de la comunidad, Tengo un problema con readyState de Ajax, esta función no cambia de estado (se queda en 1) pero ...
  #1 (permalink)  
Antiguo 22/02/2013, 09:37
 
Fecha de Ingreso: diciembre-2012
Mensajes: 21
Antigüedad: 12 años
Puntos: 1
Problema con readyState de Ajax

Saludos a todos lo de la comunidad,

Tengo un problema con readyState de Ajax, esta función no cambia de estado (se queda en 1) pero solo ocurre cuando hago peticiones masivas, es decir, cuando llamo a la función por lo menos 5 veces (en la 5ta si funciona pero no las anteriores)

Les coloco la función de ajax:

Código Javascript:
Ver original
  1. function enviar_datos_tasaBruta(div,a,b,c){
  2.     divResultado = document.getElementById(div);
  3.     ajax=objetoAjax2();
  4.       ajax.open("POST", "fct_oenviar_datos_tasaBruta.php",true);
  5.       ajax.onreadystatechange=function() {
  6.         if (ajax.readyState==4) {
  7.             divResultado.innerHTML = ajax.responseText;
  8.         }else {
  9.             var cargando="<img width='20' height='20' style='vertical-align:sub' src='imagenes/loading.gif'/>"
  10.             divResultado.innerHTML = cargando+" Cargando...";
  11.         }
  12.     }
  13.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  14.     ajax.send("j_a="+a+"j_b="+b+"j_c="+c);
  15. }

Gracias a todos por adelantado!

Última edición por sairam2188; 22/02/2013 a las 09:53
  #2 (permalink)  
Antiguo 22/02/2013, 11:13
Avatar de maycolalvarez
Colaborador
 
Fecha de Ingreso: julio-2008
Ubicación: Caracas
Mensajes: 12.120
Antigüedad: 16 años, 4 meses
Puntos: 1532
Respuesta: Problema con readyState de Ajax

claro que no te funciona, porque debes evaluar también el ajax.status==200 además del readyState, es el error más común en principiantes de AJAX, recomiendo este libro: http://librosweb.es/ajax/

saludos
__________________
¡Por favor!: usa el highlight para mostrar código
El que busca, encuentra...
  #3 (permalink)  
Antiguo 22/02/2013, 11:14
Avatar de Albuss  
Fecha de Ingreso: enero-2012
Ubicación: Coruña
Mensajes: 475
Antigüedad: 12 años, 10 meses
Puntos: 30
Respuesta: Problema con readyState de Ajax

maycolalvarez tiene razón, incluye un if para comprobar después del readuState, el status, este sirve para diferir entre error de pagina y estado OK.

Código Javascript:
Ver original
  1. if(ajax.readyState == 4) {
  2.                         if(ajax.status == 200) {
  3.                                
  4. }
  5. }
  #4 (permalink)  
Antiguo 22/02/2013, 11:21
 
Fecha de Ingreso: diciembre-2012
Mensajes: 21
Antigüedad: 12 años
Puntos: 1
Respuesta: Problema con readyState de Ajax

Amigo lo coloque pero el error continua

Código Javascript:
Ver original
  1. function enviar_datos_tasaBruta(div,a,b,c){
  2.     divResultado = document.getElementById(div);
  3.     var ajax=objetoAjax2();
  4.       ajax.open("POST", "fct_oenviar_datos_tasaBruta.php",true);
  5.       ajax.onreadystatechange=function() {
  6.         if (ajax.readyState==4) {
  7.             if(ajax.status == 200)
  8.                    divResultado.innerHTML = ajax.responseText;
  9.         }else {
  10.             var cargando="<img width='20' height='20' style='vertical-align:sub' src='imagenes/loading.gif'/>"
  11.             divResultado.innerHTML = cargando+" Cargando...";
  12.         }
  13.     }
  14.     ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
  15.     ajax.send("j_a="+a+"j_b="+b+"j_c="+c);
  16. }
  #5 (permalink)  
Antiguo 22/02/2013, 11:24
 
Fecha de Ingreso: diciembre-2012
Mensajes: 21
Antigüedad: 12 años
Puntos: 1
Problema con javascript y ajax

Tengo el siguiente código Javascript (usando ajax)
Código Javascript:
Ver original
  1. <script language="JavaScript" type="text/javascript">
  2. function ajaxobj() {
  3.     try {
  4.         _ajaxobj = new ActiveXObject("Msxml2.XMLHTTP");
  5.     } catch (e) {
  6.         try {
  7.             _ajaxobj = new ActiveXObject("Microsoft.XMLHTTP");
  8.         } catch (E) {
  9.             _ajaxobj = false;
  10.         }
  11.     }
  12.     if (!_ajaxobj && typeof XMLHttpRequest!='undefined') {
  13.         _ajaxobj = new XMLHttpRequest();
  14.     }
  15.     return _ajaxobj;
  16. }
  17.  
  18. function ajax_get_div (url,div) {
  19.     // Instanciamos el objecto XMLHttpRequest
  20.     ajax = ajaxobj();
  21.     // Abrimos la conexión al script
  22.     ajax.open("GET", url, true);
  23.     // Indicamos que función vigila el cambio de estado
  24.     ajax.onreadystatechange=function() {
  25.         if (ajax.readyState == 4) {
  26.             // Mostramos resultado
  27.             document.getElementById(div).innerHTML = ajax.responseText;  
  28.         }
  29.     }
  30.     // Enviamos algo para que funcione el proceso
  31.     ajax.send(null);
  32. }
  33. </script>

Ese código lo uso para mostrar el contenido de un php en un DIV determinado... la llamada a la funcion desde javascript sería asi:
Código Javascript:
Ver original
  1. ajax_get_div('archivo1.php','divuno');

Hasta ahi, todo perfecto... el problema se me produce cuando quiero llamar a la función dos veces al mismo tiempo:
Código Javascript:
Ver original
  1. ajax_get_div('archivo1.php','divuno');
  2. ajax_get_div('archivo2.php','divdos');

Me funciona sólo uno de los dos......

Seguramente el problema es que estoy usando las mismas variables o el mismo objeto.....
Acá perdonen mi ignorancia.... pero javascript toco de oído
  #6 (permalink)  
Antiguo 22/02/2013, 11:33
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, 6 meses
Puntos: 834
Respuesta: Problema con readyState de Ajax

Temas unidos.
  #7 (permalink)  
Antiguo 22/02/2013, 11:54
 
Fecha de Ingreso: diciembre-2012
Mensajes: 21
Antigüedad: 12 años
Puntos: 1
Respuesta: Problema con readyState de Ajax

Ya solucione el problema, se trata de AJAX Síncrono y Asíncrono, en mi caso necesitaba ajax síncrono ya que las llamadas a la función se hacen de forma continuaes decir, llamas y la ejecución se espera hasta que la llamada responde.

Eso se logra modificando un parametro en ajax.open(param1,param2,true or false)
Código Javascript:
Ver original
  1. ajax.open("POST", "fct_oenviar_datos_tasaBruta2_AI.php",false);

false = Síncrono
true = Asíncrono

Etiquetas: ajax, funcion, html, readystate
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:06.