Pantalla de espera en peticiones AJAX con jQuery

Cuando trabajamos con aplicaciones que tienen interfaces web, sin lugar a dudas, la experiencia de usuario mejora enormemente si hacemos uso de tecnologías como AJAX que nos permiten transmisiones y recepciones asíncronas.

No se fuerzan cambios ni refrescos de pantalla y por lo tanto, la experiencia del usuario es más continua y más parecida a cómo sería en un interfaz de escritorio. Sin embargo, este tipo de tecnologías tiene un problema: si no controlamos los eventos del usuario mientras existe una carga de datos, es posible que se generen comportamientos erráticos.

Pongamos un ejemplo. Tenemos un sistema que carga una serie de datos de forma dinámica con AJAX a través de un formulario. Cuando el usuario hace la búsqueda, la carga se realiza y se le muestra. Si la carga tarda “mucho” y no se bloquea de alguna forma la posibilidad de seguir buscando, pueden aparecer resultados incoherentes (de búsquedas anteriores) o directamente fallar el sistema por sobrecarga.

¿Cuál es la solución más popular para este tipo de problemas? Utilizar una pantalla de espera. Vamos a explicar cómo hacerlo con jQuery en muy pocos pasos.

Introducción

La solución que vamos a usar, utilizará un div no opaco de color gris, que ocupará la pantalla al completo cuando se produzca una petición de tipo AJAX. El div incorporará una animación en la parte central.

El div

Deberemos situar un div que por defecto se encuentre escondido, hide, justo al comienzo de nuestro código del body. Contendrá una imagen de carga, que podréis generar fácilmente con alguna aplicación web como AJAXLoad.

El código será el siguiente:

<div id="div_carga">
<img id="cargador" src="./images/ajax-loader.gif"/>
</div>

El estilo del div

Para que el div ocupe la pantalla completa y la imagen se quede en medio, deberemos establecer las siguientes reglas CSS:

#div_carga{
    position:absolute;
    top:0;
    left:0;
    width:100%;
    height:100%;
	background: url(images/gris.png) repeat;
	display:none;
	z-index:1;
}

#cargador{
    position:absolute;
    top:50%;
    left: 50%;
    margin-top: -25px;
    margin-left: -25px;
}

El fichero gris.png que aparece, es un fichero con una imagen en PNG de color gris con transparencias.


El código jQuery

Finalmente tenemos que introducir el código que se encargue de hacer que en cuanto se produce una petición AJAX el div se muestre y que cuando finalice, se oculte. Podríamos hacerlo para cada operación, pero es mucho más cómodo usar las funciones:

¿Cómo? Como se muestra a continuación.

$('#div_carga') .hide() .ajaxStart(function() { $(this).show(); }) .ajaxStop(function() { $(this).hide(); }) ; read more

Leer más » 12 Comentarios

Ubuntu en la carretera

Curioso el vídeo que he encontrado vía OMG Ubuntu en Facebook:

Y es que tenemos a Ubuntu hasta en la sopa. Me encanta.

Leer más » 2 Comentarios

El abecedario en nuestra red

El otro día, me encontré casualmente con una entrada en victorcuervo.com en la que contaba qué le sugería su navegador al teclear cada una de las letras del abecedario. Acabo de hacer esa misma prueba, y curiosamente sólo coincido en la Z:

A: analytics.google.com
: bbva.net
C: cablematic.es
D: digikey.com
E: elblogsalmon.com
F: followfriday.com
G: gmail.com
H: https://www.linuxhispano.net
I: imageshack.us
J: javadocx.com
K: kanzelsberger.com
L: linuxhispano.net
M: meneame.net
: nathive.org
Ñ: –
O: osalt.com
: paypal.com
Q: –
R: reader.google.com
: shop.canonical.com
T: translate.google.com
U: usbfirewire.com
V: videolan.org
W: www.linuxhispano.net
X: xkcd.com
Y: yahoo.es
Z: zoho.com read more

Leer más » 7 Comentarios

Instalar muCommander

muCommander es una alternativa al conocido Norton Commander. Es posible que muchos de vosotros uséis Total Commander (la alternativa de pago para Windows), yo de hecho lo uso en el trabajo, igual estoy creando un poco de polémica, pero a día de hoy no he encontrado un file manager mejor que este último.

Para instalarlo en Debian (y Ubuntu o derivados) editamos los sources de APT desde la línea de comandos con:

ahornero@6581-D:~$ sudo nano /etc/apt/sources.list
[sudo] password for ahornero: *** read more

Leer más » 6 Comentarios

Ubuntu online

El nombre de la entrada lo dice todo. Para probar Ubuntu online sólo tenemos que ingresar en Ubuntu con nuestro usuario, el registro es gratuito y si tenéis Ubuntu One es el mismo.

Para acceder al servicio: try-ubuntu-beta.ec42.net

Leer más » 7 Comentarios

Errores

Leer más » 2 Comentarios

Programar copias de seguridad automáticas de PostgreSQL

Si hace unos días hablábamos de cómo hacer backup y restaurar copias de seguridad con MySQL, hoy vamos a hablar de cómo hacerlo con PostgreSQL, incluyendo un detalle más: la automatización para que se ejecute de forma periódica y automática.

pg_dump

Si con MySQL usamos mysqldump, con PostgreSQL utilizamos pg_dump. ¿Cuál es la sintaxis básica? read more

Leer más » 6 Comentarios

¿Cómo traducir programas libres? Uso en PHP (Parte III)

Si ya hemos hablado en líneas generales del tema y hemos comentado cómo hacer uso de los ficheros .po, .mo y .pot, ahora nos toca el turno de llevar a la práctica todo esto. Suponemos que tenemos ya nuestros ficheros .PO y .MO creados. Si queréis practicar, podéis usar los paquetes de lenguaje de cualquier aplicación libre, por ejemplo, los de la versión española de WordPress. Empecemos paso a paso.

Marcar las cadenas a traducir

En lugar de usar directamente:

print “<p>Cadena a traducir</p>\n”; read more

Leer más » 7 Comentarios

Cargar una imagen en JavaScript

A la hora de desarrollar web apps resulta fundamental algún metodo eficaz para cargar imágenes en Javascript. Antes de que el usuario entre en una página es necesario que ésta se cargue por completo. Si en tu aplicación web vas a trabajar con imágenes dinámicas, es decir, que se crean en un momento determinado es fundamental que antes realices la carga en memoria.

Éste es el código que utilizo sin usar ningún tipo de librería:

var imagen = new Image(); imagen.onload = imagenCargada; imagen.src = "ejemplo.png"

En la función imagenCargada es donde ya sé que la imagen ha sido cargada correctamente y puedo proceder a su utilización ya que está almacenada en memoria. read more

Leer más » 4 Comentarios

Lo mejor de mi RSS del 18 al 24 de abril

Leer más » 3 Comentarios