Mostrar Mensaje “Cargando” Con Prototype y PHP

Buscando por todos lados para lograr el efecto de Gmail cuando esta cargando el contenido me propuse hacer el siguiente tutorial para hacerlo usando Ajax, esto con el fin de informar de manera visual al usuario que “algo” esta sucediendo, lo que pasa es uno de los principales efectos de usar Ajax es que el usuario no sabe o no se da cuenta de que una petición se esta ejecutando de manera asíncrona.

Para esta guía usé el framework Prototype y esta probado en la mayoria de los navegadores. Solo en IE 6 no funciona de manera adecuada.

Así pues, nos hacemos la siguiente pregunta:

Pregunta: ¿Cómo muestro un gif animado con el mensaje “cargando…” mientras se procesa la respuesta con AJAX?

A lo que respondemos:

Respuesta: Este ejemplo es muy similar al efecto que hace gmail cuando se borra o carga un correo. (un mensaje en la ezquina superior derecha)

yo le he puesto ademas un gif animado para indicar el progreso.

Primero el código CSS:

.msgStatus {
position:fixed;
top:1px;
right:1px;
border:1px solid #FF6600;
background-color:#FEEB9D;
color:#333;
font-family:Verdana, Arial, Helvetica, sans-serif;
font-size:14px;
width:auto;
height:auto;
display:none;
}

Puedes colocar este codigo directamente en tu pagina o hacer un archivo de estilos. (te recomiendo lo último)

Ahora el HTML de la página donde se hará uso del efecto.

Código HTML:

<!--Esto en el header de la pagina -->
<
script language="javascript" type="text/javascript">
Ajax.Responders.register(globalCallbacks);
</script>

<!--Esto dentro del body -->
<div class="msgStatus" id="status"><center><img src='img/ajax-loader.gif' border='0' align='absmiddle'>Procesando tu solicitud.</center></div>

Yo uso el siguiente gif:
http://mypage.bluewin.ch/yuppi/image…jax-loader.gif

Ahora la solicitud por AJAX.

Código AJAX:

// Generalmente tenemos un archivo .js con las funciones javascript/ajax, poner esto
var globalCallbacks = {
onCreate: function(){$('status').style.display = 'block';},
onComplete : function(){
if (
Ajax.activeRequestCount == 0){
$(
'status').style.display = 'none';
}
}
}
// despues de esto hacer cualquier petición con ajax por ejemplo:
function MiFuncionAjax(list_params){
var
parametros = 'parametros=' + list_params;
new
Ajax.Request('script.php', {method: 'post', parameters: parametros });
}


Y ya!

¿Cómo funciona? La variable globalCallbacks contiene dos funciones anonimas onCreate y onComplete, cuando el objeto ajax se crea el div se activa, y con onComplete se oculta.
Para que esto funcione se debe de colocar en el header de la pagina el responder: Ajax.Responders.register(globalCallbacks); que constatemente monitorea el comportamiento de la pagina, cuando se detecta que hay una petición Ajax pues le avisa a globalCallbacks que hay trabajo que hacer

Hecho esto, practicamente cualquier petición hecha con ajax es detectada y proceso visual con el div hace el resto.

Nota: Esto funciona usando Prototype.

6 comentarios para “Mostrar Mensaje “Cargando” Con Prototype y PHP”

  1. Hernán Dice:

    Hola, bueno necesito poder profundizar en el Tema ajax pero necesito un tutorial pero clave para poder aprender ya que no tengo ni idea como empezar, ni que herramienta utilizar, por favor indícame, plis…..

  2. VaRg@s Dice:

    Hola, te recomiendo que uses prototype por su facilidad. Te dejos estos links para que puedas orientarte al respecto.

    http://www.estadobeta.net/2006/08/04/prototype/
    http://www.estadobeta.net/2006/09/04/prototype-iteradores/
    http://www.estadobeta.com/2006/10/10/prototype-ajax/

    Espero que te sirvan.

    Y si tienes tiempo de sobra. Chécate estos videotutoriales, Seguro entiendes y aprendes.
    http://www.illasaron.com/tele/ajax.htm

  3. Invitado Dice:

    Interesantes los links e interesante herrmienta tambien.

    Cuanta informacion !!!

  4. ASPE_T Dice:

    Je je je

    yo tengo muy similiar, y se ve de maravilla en lo que hago.

    Bien !

  5. Rubì Dice:

    ¿¿¿???? no cabe duda que dada vez me sorprendo mas, creo que hay mucho que leer y que aprender, por lo que veo, es muy interesante esta herramienta, y sobre todo muy util, aunque a la vez comienzo a arrepentirme de la carrera que elegi, pues siempre hay algo nuevo que saber, de lo contrario….

    ha y gracias x la informacion!!! los tutoriales nos ayudaran x lo menos para saber de que se trata

  6. Yigly Dice:

    EL link no es valido.


Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.