El desarrollador web moderno que no tiene en cuenta el Ajax en la planificación o la construcción de sus páginas web, está perdiéndose de una poderosa herramienta para mejorar la usabilidad.
Sin embargo, existen desafÃos en la aplicación de de AJAX en una página web. En esta nota vamos a analizar las soluciones a cinco de los retos más comunes que un desarrollador se enfrenta cuando utiliza Ajax para mejorar el contenido de su sitio web.
Problema # 1: El contenido no es compatible con versiones anteriores
Este problema se produce cuando un diseñador ha incorporado mejoras en JavaScript y Ajax en la arquitectura de su sitio web sin establecer disposiciones para los navegadores que tienen deshabilitado JavaScript.
No hay nada malo con la planificación de un sitio Web con JavaScript y Ajax, de hecho, en el mercado actual, las consideraciones JavaScript deberÃan ser parte integral del proceso de planificación. Pero aún te debes asegurar de que el sitio es compatible con versiones anteriores al iniciarse.
Solución: Implementar Ajax como una mejora de un sitio ya en funcionamiento
Mientras que el Ajax puede ser parte integral de la planificación de la arquitectura del sitio web, asegúrate de que todo el contenido es accesible a través de métodos convencionales del lado del servidor.
Digamos que tienes una página de "Información del empleado" que tiene un enlace separado para cada empleado. El uso de tecnologÃa del lado del servidor, puedes mostrar el contenido de un empleado en particular sobre la base de un valor pasado a través del string de consulta, como éste:
Todos los enlaces anteriores apuntan a la misma página, la página "Empleados", que cambia de acuerdo a la variable del string de consulta. La información de cada empleado se puede cargar desde el servidor, lo que puede hacerse de varias maneras: a través de inclusiones del lado del servidor, a través de una base de datos, o incluso usando XML.
Cualquiera que sea el enlace de empleados en que se hace clic, la página completa tendrÃa que cargar para que la información solicitada sea entregada.
AsÃ, el contenido es totalmente accesible antes de que las mejoras Ajax se coloquen en la parte superior. Luego, usando JavaScript, la actualización de la página completa puede ser interrumpida y el contenido cargado a través de Ajax. El link sobre el que se hace clic puede ser identificado por un ID o por la comprobación del valor del atributo href en el anchor.
Aunque el contenido es totalmente accesible con JavaScript desactivado, la mayorÃa de los usuarios verán la versión AJAX mejorada.
El principio de la mejora progresiva de Ajax es bien conocido, ya que se utiliza comúnmente para técnicas de JavaScript no obstrusivo y es inherente en CSS. Por lo tanto, es mejor construir tu sitio web para trabajar sin JavaScript, y luego añadir JavaScript como un accesorio, tal como lo harÃas con el código de tu HTML y luego lo mejoras con CSS.
Problema # 2: El indicador de carga del navegador no se desencadena por peticiones Ajax
Casi todos los navegadores tienen una manera de indicar visualmente al usuario que el contenido se está cargando. En los navegadores actuales, el indicador aparece en la pestaña que está cargando el contenido.
Las imágenes siguientes muestran el indicador animado de algunos navegadores populares.

El indicador de carga de Internet Explorer es un cÃrculo sólido con un gradiente que gira mientras se carga el contenido.

Firefox muestra un Ãcono similar de pequeños cÃrculos gira en diferentes tonos de gris.

Google Chrome rueda un medio cÃrculo.
El problema es que las peticiones Ajax no activan este indicador de carga en los navegadores.
Solución: Inserta un indicador similar cerca del contenido que está cargando
La solución común a esto es incorporar un indicador de progreso personalizado en la petición Ajax. Un número de sitios web ofrecen gratis gráficos de "carga Ajax".
Preloaders.net tiene un gran número de elegantes y personalizables gráficos animados para escoger. En esta nota te damos, además, consejos para hacer atractivos visualmente estos tiempos de carga »
La aplicación de este gráfico de carga personalizado, o indicador de progreso, en la funcionalidad Ajax de tu sitio es simplemente una cuestión de mostrarlo y ocultarlo en el momento adecuado a través de JavaScript.
Tu código de Ajax incluye lÃneas de código que indicará si la solicitud está en curso o ha finalizado. Utilizando JavaScript, puedes mostrar el gráfico animado mientras que la petición está siendo procesada y esconderlo cuando la acción se ha completado.
Problema # 3: El usuario no sabe que una petición Ajax ha finalizado
Esto se relaciona con el problema anterior, pero a menudo es pasado por alto, debido a que el desarrollador podrÃa suponer que la desaparición del indicador de carga es suficiente para informar al usuario que el contenido está completamente cargado. Pero en la mayorÃa de los casos, indicar definitivamente que el contenido se ha actualizado o renovado es lo mejor.
Solución: Utiliza un mensaje distintivo de "Solicitud completada"
Esto se puede hacer de forma similar a como se confirman los envÃos de formularios. Después de que un vÃnculo ha sido presentado en Digg, la página te permite saber con toda claridad que su presentación se ha recibido:

Aunque este indicador no señala que una petición Ajax haya terminado, el principio es el mismo: la baja de "éxito" aparece después de que la página que envÃa el formulario ha terminado de cargar, y la caja es de colores y distintiva.
Un gráfico similar o indicador podrÃa utilizarse al final de una petición Ajax para indicar a los usuarios que el contenido se ha actualizado. Esto se aplicará en adición a, no en lugar de, el indicador de progreso para el problema anterior.
Problema # 4: Las solicitudes AJAX no pueden tener acceso a servicios web de terceros
El objeto XMLHttpRequest, que está en la raÃz de todas las peticiones Ajax, se limita a hacer peticiones en el mismo dominio que la página de la petición. Pero hay casos en los que se desea tener acceso a datos de terceros a través de una petición Ajax. Muchos servicios web hacen que sus datos sean accesibles a través de una API.
Solución: usar el servidor como un proxy
La solución a este problema es utilizar el servidor como un proxy entre el servicio de terceros y el navegador. Aunque los detalles de esta solución van mucho más allá del alcance de este artÃculo, vamos a repasar el principio fundamental en el trabajo.
Debido a que una petición Ajax se origina en el navegador del cliente, se debe hacer referencia a un archivo en otro lugar, pero en el mismo dominio que el origen de la petición.
Tu servidor, sin embargo, a diferencia de el navegador del cliente, no se limita de esta manera. Asà que, cuando se llama a la página de tu servidor, se ejecuta en segundo plano como lo harÃa normalmente, pero con acceso a cualquier dominio.
Esto no presenta ningún riesgo de seguridad para el usuario debido a que las peticiones al servicio de terceros se hacen en el servidor. Asà que, una vez que la información se ha obtenido a nivel de servidor, el siguiente paso en la llamada Ajax es enviar una respuesta al cliente, que en este caso incluirá los datos obtenidos del servicio de terceros web.
Problema # 5: Enlaces no disponibles
Este es un tema complicado, pero puede no ser necesario dependiendo de tu tipo de sitio web o aplicación. El problema se produce cuando el contenido se carga a través de Ajax y luego el "estado" de la página web se cambia sin que la dirección URL que apunta a esa página se vea afectada.
Si el usuario vuelve a la página a través de un marcador o comparte el vÃnculo con un amigo, el contenido actualizado no se mostrará de forma automática. El sitio web, en su lugar, volverá a su estado original. Los sitios web Flash solÃan tener el mismo problema: no permitÃan que los usuarios hagan enlace a otra cosa que no fuera la pantalla inicial.
Solución: Utiliza anchors de páginas internos
Para garantizar que un determinado "estado" en un sitio basado en Ajax sea enlazable y bookmarkable, puedes utilizar enlaces internos, que modifican la dirección URL, pero no recargan la página o afectan a su posición vertical.
Este código simple demuestra cómo se hace esto:
-
var currentAnchor = document.location;
-
currentAnchor = String(currentAnchor);
-
currentAnchor = currentAnchor.split("#");
-
if (currentAnchor.length> 1) {
-
currentAnchor = currentAnchor[1];
-
}
-
else {
-
currentAnchor = currentAnchor[0];
-
} switch(currentAnchor) {
-
case "section1":
-
case "section2":
-
case "section3":
-
default: // load content for section 1 break;
-
}
Lo anterior no es una porción de código funcional, sino más bien un ejemplo teórico para demostrar los pasos principales.
Las dos primeras lÃneas de código establecen la ubicación actual de la página (URL) en una variable. Entonces, la ubicación se convierte en un string de forma que podamos manipularla.
A continuación, "dividimos" el string en dos partes a través del sÃmbolo de anchor (#) y, posteriormente, verificamos si la matriz que se crea a partir de la división es mayor que un elemento. Mayor que un elemento significa que la dirección tiene un anchor.
Si la dirección URL tiene una sola parte, esto significa que no hay un anchor presente. La posterior declaración de "switch" carga el contenido de acuerdo con el valor del anchor. La sentencia switch tiene una opción por defecto en caso de que no esté presente el anchor, que serÃa lo mismo que cargar la página en su estado original.
Además, se aplicarÃa el código para tratar con enlaces que apuntan directamente al contenido especÃfico a través de los anchors internos. Un enlace que apunta a "contenido2" cargarÃa el contenido de "contenido2", y el string "#contenido2" se adjuntarÃa a la dirección actual.
Esto cambiarÃa la dirección mediante la adición de un anchor interior, sin cambiar la vista de la página, pero conservando un identificador que indica el estado deseado de la página.
Esta explicación es sólo teorÃa. Sin embargo, el concepto funciona, y funciona muy bien.
Fuente: Web Designer Depot








Miércoles, 6 de Enero de 2010 a las 21.13
Excelente post!!! gracias
Jueves, 7 de Enero de 2010 a las 12.33
[...] | El Webmaster – Ajax: Solución a 5 problemas muy comunes en su uso [...]
Jueves, 10 de Marzo de 2011 a las 23.56
Hola, muy buen post...estoy interesado en resolver el problema del servidor proxy para realizar peticiones a traves de AJAX a otras webs....puedes explicar como hacerlo? he buscado por todas partes y y algunas explican algo pero muy superficialmetne como en librosweb.
Gracias
Lunes, 19 de Septiembre de 2011 a las 17.26
exelente!!! me quito algunas dudas