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

ajax loader

Estas en el tema de ajax loader en el foro de Frameworks JS en Foros del Web. hola gente de fdw tengo un problemita... yo uso un paginador que es este: http://www.ribosomatic.com/articulos/paginar-consultas-con-mysql-php-y-ajax/ y lo que queria es que cuando esta cambiando la ...
  #1 (permalink)  
Antiguo 23/11/2008, 15:16
(Desactivado)
 
Fecha de Ingreso: enero-2008
Mensajes: 29
Antigüedad: 16 años, 3 meses
Puntos: 0
ajax loader

hola gente de fdw tengo un problemita... yo uso un paginador que es este: http://www.ribosomatic.com/articulos/paginar-consultas-con-mysql-php-y-ajax/


y lo que queria es que cuando esta cambiando la pagina en el medio de la pantalla halla una imagen de loading.. como puedo hacer?
  #2 (permalink)  
Antiguo 23/11/2008, 16:30
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: ajax loader

Hola:

Otro paginador "ineficiente" con ajax... son casos absurdos, ya que plantean eficiencia al no recargar toda la página al requerir casos puntuales solamente, pero se vuelven a cargar esos datos una y otra vez cuando simplemente tan solo deberían ocultarse.

Un ejemplo mejor puedes verlo aquí: Ajax: Galería de imágenes paginada...

Sobre la pregunta concreta, pues no creo que sea problema ajax, sino javascript, deberías crear una capa oculta con una imagen que te guste para centrar y que represente esa espera (por ejemplo un reloj... tal vez de arena...) que rellene la pantalla, y tenerla oculta hasta que se haga la petición Ajax. Luego, al momento de recoger los resultados volverla a ocultar.

Saludos
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
  #3 (permalink)  
Antiguo 23/11/2008, 19:30
(Desactivado)
 
Fecha de Ingreso: enero-2008
Mensajes: 29
Antigüedad: 16 años, 3 meses
Puntos: 0
Respuesta: ajax loader

Cita:
Iniciado por caricatos Ver Mensaje
Hola:

Otro paginador "ineficiente" con ajax... son casos absurdos, ya que plantean eficiencia al no recargar toda la página al requerir casos puntuales solamente, pero se vuelven a cargar esos datos una y otra vez cuando simplemente tan solo deberían ocultarse.

Sobre la pregunta concreta, pues no creo que sea problema ajax, sino javascript, deberías crear una capa oculta con una imagen que te guste para centrar y que represente esa espera (por ejemplo un reloj... tal vez de arena...) que rellene la pantalla, y tenerla oculta hasta que se haga la petición Ajax. Luego, al momento de recoger los resultados volverla a ocultar.

Saludos
claro pero como escribo eso osea yo logre hacer esto:

Código:
divContenido = document.getElementById('contenido');
cargando = document.getElementById('cargando');

 ajax=objetoAjax();
 ajax.open("GET", "link.php?id="+nropagina);
 cargando.innerHTML= '<img src="images/cargando-ajax.gif">';
 ajax.onreadystatechange=function() {
  if (ajax.readyState==4) {
   divContenido.innerHTML = ajax.responseText
  }
 }
ajax.send(null)
con eso me anda pero el problema es que capas el contenido cargo pero la imagen no se va queda de por vida hasta que actualize la web


no se que estoy haciendo mal
  #4 (permalink)  
Antiguo 23/11/2008, 23:35
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Respuesta: ajax loader

Hola:

Pues verás, un poco más eficiente podría ser por ejemplo guardando en una variable la página actual, y crear una nueva capa por cada nueva petición... luego simplemente si existe la página mostrarla en cada petición, y si no existe crear esa capa... más o menos... suponiendo que la petición la hagas con una función "pedir_pagina(n)"...

<script>
actual = 1;
function pedir_pagina(n) {
document.getElementById("pagina_" + actual).style.display = "none";
if (document.getElementById("pagina_" + n))
document.getElementById("pagina_" + n).style.display = "block";
else {
divContenido = document.createElement("div");
divContenido.id = "pagina_" + n;
document.body.appendChild(divContenido);
// aquí el resto que del código que tienes...
}
actual = n;
}

Se supone que la primera página será "pagina_1"...

Saludos

... por cierto, ¿te ha servido lo de la página cargando... ? parece que no...

La idea sería que tu capa "cargando" esté oculta y sea la última (antes del </body>, y con estos estilos:

#cargando {
position: absolute;
display: none;
top: 0;
left: 0;
width: 100%;
height: 100%;
background: white url(espera.gif) no-repeat center center;
}

Entonces la instrucción sería:
cargando.style.display ="block"; al hacer la petición ajax, y cambiar "block" por "none" cuando se obtiene la respuesta ajax...
Y las nuevas capas deberían estar antes de la capa "cargando"...

document.body.insertBefore(divContenido, cargando);

__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo
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 16:30.