Ver Mensaje Individual
  #2 (permalink)  
Antiguo 19/01/2014, 18:16
Avatar de Alexis88
Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Problema con estado 1 en loader

Tuve un problema similar elaborando mi función Ajax, pero lo resolví retrasando la ejecución de la respuesta del servidor. Lo que sucede es que la respuesta es tan rápida, que no alcanza el tiempo para que aparezca el gif de carga, pero si retrasas las instrucciones que se ejecutan cuando recibes la respuesta, podrás ver el gif.

Código Javascript:
Ver original
  1. if (xmlhttp.readyState < 4) {
  2.     document.getElementById("carga1").innerHTML = "<img src='imagenes_menu/ajax-loader4.gif' align='center' /><br />Cargando...";
  3. }
  4. else {
  5.     if (xmlhttp.readyState==4 && xmlhttp.status==200) {
  6.         setTimeout(function() {
  7.             var xml = xmlhttp.responseXML;
  8.             dato = xml.getElementsByTagName("datos");
  9.             if (dato[0].firstChild.nodeValue == "1") {
  10.                 num_user = xml.getElementsByTagName("numusuario");
  11.  
  12.                 document.getElementById("movil").value = xml.getElementsByTagName("movil")[0].firstChild.nodeValue;
  13.                 document.getElementById("calle").value = xml.getElementsByTagName("calle")[0].firstChild.nodeValue;
  14.                 document.getElementById("dni").value = xml.getElementsByTagName("dni")[0].firstChild.nodeValue;
  15.                 document.getElementById("name").value = xml.getElementsByTagName("name")[0].firstChild.nodeValue;
  16.                 document.getElementById("edificio").value = xml.getElementsByTagName("edificio")[0].firstChild.nodeValue;
  17.                 document.getElementById("numero").value = xml.getElementsByTagName("numero")[0].firstChild.nodeValue;
  18.                 document.getElementById("puerta").value =xml.getElementsByTagName("puerta")[0].firstChild.nodeValue;
  19.                 document.getElementById("piso").value = xml.getElementsByTagName("piso")[0].firstChild.nodeValue;
  20.                 document.getElementById("letra").value = xml.getElementsByTagName("letra")[0].firstChild.nodeValue;
  21.                 document.getElementById("localidad").value = xml.getElementsByTagName("localidad")[0].firstChild.nodeValue;
  22.                 document.getElementById("provincia").value = xml.getElementsByTagName("provincia")[0].firstChild.nodeValue;
  23.                 document.getElementById("email").value = xml.getElementsByTagName("email")[0].firstChild.nodeValue;
  24.             }
  25.            
  26.             if(dato[0].firstChild.nodeValue=="0")
  27.                 envia();
  28.         }, 1500);
  29.     }
  30. }

Con el método setTimeout, retraso 1500 milisegundos o 1.5 segundos, la ejecución de las instrucciones que ocurrirán cuando se reciba la respuesta del servidor.

Saludos
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand