Foros del Web » Programando para Internet » Javascript »

Loader mientras consulto datos....

Estas en el tema de Loader mientras consulto datos.... en el foro de Javascript en Foros del Web. hola amigos! He realizado un mi script para realizar una consulta a la base de datos a traves de un archivo *.php, y todo funciona ...
  #1 (permalink)  
Antiguo 06/10/2009, 12:22
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 11 meses
Puntos: 7
Pregunta Loader mientras consulto datos....

hola amigos!

He realizado un mi script para realizar una consulta a la base de datos a traves de un archivo *.php, y todo funciona a la perfección.

Perooo...

Necesito que mientras estoy consultado los datos en la BD que me muestre un loader.

les dejo mi codigo a ver si me pueden ayudar!

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>.::Envio de datos ajax::.</title>
  5. <script language="JavaScript" type="text/javascript">
  6. function display_data(mid,terminal) {
  7.     xmlhttp=GetXmlHttpObject();
  8.     if (xmlhttp==null) {
  9.         alert ("Su navegador no soporta AJAX, Por favor utilice una version mas reciente del navegador");
  10.         return;
  11.     }
  12.     mid=document.getElementById(mid).value;
  13.     ter=document.getElementById(terminal).value;   
  14.     var url="process.php";
  15.     url=url+"?mid="+mid+"&terminal="+ter;
  16.     xmlhttp.onreadystatechange=function() {
  17.         if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
  18.             document.getElementById('resultado').innerHTML=xmlhttp.responseText;
  19.         }
  20.     }
  21.     xmlhttp.open("GET",url,true);
  22.     xmlhttp.send(null);
  23.    return false;
  24. }
  25. function GetXmlHttpObject() {
  26.     var xmlhttp=null;
  27.     try {
  28.         // Firefox, Opera 8.0+, Safari
  29.         xmlhttp=new XMLHttpRequest();
  30.     }
  31.     catch (e) {
  32.         // Internet Explorer
  33.         try {
  34.             xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
  35.         }
  36.         catch (e) {
  37.             xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  38.         }
  39.     }
  40.     return xmlhttp;
  41. }
  42. </head>
  43.  
  44. <form onSubmit="return display_data('mid','terminal')">
  45. <table style="width: 50%; text-align: left; margin-left: auto; margin-right: auto;" border="0" cellpadding="2" cellspacing="2">
  46.   <tbody>
  47.     <tr>
  48.       <td>Afiliación:</td>
  49.       <td><input type="text" name="TXTmid" id="mid"/></td>
  50.     </tr>
  51.     <tr>
  52.       <td>Terminal:</td>
  53.       <td><input type="text" name="TXTterminal" id="terminal"/></td>
  54.     </tr>
  55.     <tr>
  56.       <td colspan="2" rowspan="1" align="center"><input type="submit" value="Enviar" name="BTNenviar" /></td>
  57.     </tr>
  58.   </tbody>
  59. </form>
  60. <div id="resultado"></div>
  61. </body>
  62. </html>
  #2 (permalink)  
Antiguo 06/10/2009, 14:01
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Loader mientras consulto datos....

Hola

Bueno esto que te ocupa es AJAX asíncrono. Así que solo has de comprobar en que estado (1,2 o 3) se encuentra la comunicación. En esos estado usas la imagen de cargando

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #3 (permalink)  
Antiguo 06/10/2009, 14:04
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Loader mientras consulto datos....

Hola!

En donde haces xmlhttp.onreadystatechange, te convendria hacerlo de esta forma


xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
document.getElementById('resultado').innerHTML=xml http.responseText;
}else {
CARGAA.....
}
}
  #4 (permalink)  
Antiguo 06/10/2009, 16:42
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 11 meses
Puntos: 7
Respuesta: Loader mientras consulto datos....

Cita:
Iniciado por estefanosalazar Ver Mensaje
Hola!

En donde haces xmlhttp.onreadystatechange, te convendria hacerlo de esta forma


xmlhttp.onreadystatechange=function() {
if (xmlhttp.readyState==4 || xmlhttp.readyState=="complete") {
document.getElementById('resultado').innerHTML=xml http.responseText;
}else {
CARGAA.....
}
}
Ohh amigo gracias lo voy a probar!
mi pregunta q soy novato en js, una vez xmlhttp.readyState==4 o xmlhttp.readyState=="complete" se mostrara la imagen que quiero, mientras no obtenga datos no tendre nada hsta completar el proceso, o debo recargar??

disculpa mi ignorancia!
  #5 (permalink)  
Antiguo 06/10/2009, 17:06
 
Fecha de Ingreso: septiembre-2009
Mensajes: 124
Antigüedad: 14 años, 7 meses
Puntos: 3
Respuesta: Loader mientras consulto datos....

Hola nuevamente!

No es necesario que recargues, todo lo que tenes que hacer es despues mostrarlo con (en tu caso) xmlhttp.responseText.

Realmente no estoy seguro si "complete" es uno de los estados de Ajax.

Te recomendaria que saques el "complete".

Los estados de Ajax van de 0 a 4

0: sin inicializar
1: abierto
2: cabeceras recibidas
3: cargando
4: completo

Por eso mismo, los pasos 0, 1, 2 y 3 los tomas como que todavia esta cargando, y una vez que este en su estado 4 (completo) borras el texto/imagen de carga.

Saludos!
  #6 (permalink)  
Antiguo 07/10/2009, 05:48
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Loader mientras consulto datos....

Hola

complete lo leería IE y Opera. Prueba con esto

Código javascript:
Ver original
  1. if (ajax==null){
  2.             alert ("Tu navegador web no soporta AJAX!");
  3.         return;
  4.     }
  5.         if (ajax.readyState==1 || ajax.readyState==2 || ajax.readyState==3) {
  6.                                         enespera.innerHTML = "<img src='precarga.gif' border='0' />";
  7.             }
  8.                 else if (ajax.readyState==4){
  9.                         if(ajax.status==200){
  10. .......
  11.  
  12.  
  13.                         }
  14.                     else if (ajax.status==404)
  15.                                              {
  16.                                     objetosel.innerHTML = "La dirección no existe";
  17.                                              }
  18.                                      else
  19.                                              {
  20.                                     objetosel.innerHTML = "Se ha producido un error";
  21.                                              }
  22.                                     }
  23.                   }

Claro está, cambiando el objeto ajax por xmlhttp y objetosel por el elemento que va a recibir la respuesta

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #7 (permalink)  
Antiguo 09/10/2009, 11:25
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 11 meses
Puntos: 7
Respuesta: Loader mientras consulto datos....

Gracias amigos, ahora fijense q necesito q ese div se actualice pero no he podido aun con un setinterval o algo asi!

Saludos
  #8 (permalink)  
Antiguo 09/10/2009, 12:22
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Loader mientras consulto datos....

Hola

Prueba con esto

window.onload = function () {window.setInterval("funcion()",900000);};

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #9 (permalink)  
Antiguo 09/10/2009, 16:03
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 11 meses
Puntos: 7
Respuesta: Loader mientras consulto datos....

Cita:
Iniciado por Adler Ver Mensaje
Hola

Prueba con esto

window.onload = function () {window.setInterval("funcion()",900000);};

Suerte
Gracias, pero lo que necesito es actualizar un div especifico!

muy buena la idea pero es solo para un div no para toda la pagina!

  #10 (permalink)  
Antiguo 10/10/2009, 04:47
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Loader mientras consulto datos....

Hola

Cita:
Iniciado por bacdavi Ver Mensaje
Gracias, pero lo que necesito es actualizar un div especifico!

muy buena la idea pero es solo para un div no para toda la pagina!

Bueno, me temo que ni tan siquiera lo has probado, ya que lo que hace es ejecutar un función cada cierto intervalo de tiempo

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #11 (permalink)  
Antiguo 10/10/2009, 11:21
Avatar de bacdavi  
Fecha de Ingreso: junio-2006
Ubicación: http://localhost/
Mensajes: 351
Antigüedad: 17 años, 11 meses
Puntos: 7
Sonrisa Respuesta: Loader mientras consulto datos....

Cita:
Iniciado por Adler Ver Mensaje
Hola



Bueno, me temo que ni tan siquiera lo has probado, ya que lo que hace es ejecutar un función cada cierto intervalo de tiempo

Suerte
Te cuento que ya lo he probado y por eso es que te decia que no me funciona con mi div...

Agradezco la ayuda, aunque sigo investigando como poder actualizar el div....
  #12 (permalink)  
Antiguo 10/10/2009, 12:51
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 17 años, 4 meses
Puntos: 126
Respuesta: Loader mientras consulto datos....

Hola

Imprime lo que tienes

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
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 23:21.