AJAX, acrnimo de Asynchronous JavaScript And XML (JavaScript asncrono
y XML), es una tcnica de desarrollo web para crear aplicaciones interactivas o RIA (Rich Internet Applications). Estas aplicaciones se ejecutan en el cliente, es decir, en el navegador de los usuarios mientras se mantiene la comunicacin asncrona con el servidor en segundo plano. De esta forma es posible realizar cambios sobre las pginas sin necesidad de recargarlas, mejorando la interactividad, velocidad y usabilidad en las aplicaciones. Ajax es una tecnologa asncrona, en el sentido de que los datos adicionales se solicitan al servidor y se cargan en segundo plano sin interferir con la visualizacin ni el comportamiento de la pgina. JavaScript es el lenguaje interpretado (scripting language) en el que normalmente se efectan las funciones de llamada de Ajax mientras que el acceso a los datos se realiza mediante XMLHttpRequest, objeto disponible en los navegadores actuales. En cualquier caso, no es necesario que el contenido asncrono est formateado en XML. Ajax es una tcnica vlida para mltiples plataformas y utilizable en muchos sistemas operativos y navegadores dado que est basado en estndares abiertos como JavaScript yDocument Object Model (DOM).
Tecnologas incluidas en Ajax Ajax es una combinacin de cuatro tecnologas ya existentes: XHTML (o HTML) y hojas de estilos en cascada (CSS) para el diseo que acompaa a la informacin. Document Object Model (DOM) accedido con un lenguaje de scripting por parte del usuario, especialmente implementaciones ECMAScript como JavaScript y JScript, para mostrar e interactuar dinmicamente con la informacin presentada. El objeto XMLHttpRequest para intercambiar datos de forma asncrona con el servidor web. En algunos frameworks y en algunas situaciones concretas, se usa un objeto iframeen lugar del XMLHttpRequest para realizar dichos intercambios. PHP es un lenguaje de programacin de uso general de script del lado del servidor originalmente diseado para el desarrollo web de contenido dinmico tambin utilizado en el mtodo Ajax. XML es el formato usado generalmente para la transferencia de datos solicitados al servidor, aunque cualquier formato puede funcionar, incluyendo HTML preformateado, texto plano, JSON y hasta EBML. Como el DHTML, LAMP o SPA, Ajax no constituye una tecnologa en s, sino que es un trmino que engloba a un grupo de stas que trabajan conjuntamente.
Frameworks y libreras Las aplicaciones web son cada vez ms complejas, ya que incluyen efectos e interacciones que hasta hace poco tiempo eran exclusivas de las aplicaciones de escritorio. Al mismo tiempo, la programacin de estas aplicaciones avanzadas se complica por varios motivos. En primer lugar, las aplicaciones comerciales deben funcionar correctamente e igual de bien en al menos cinco navegadores diferentes: Internet Explorer 6 y 7, Firefox, Opera y Safari. En segundo lugar, el tiempo disponible para el desarrollo de cada nueva caracterstica se reduce cada vez ms por la necesidad continua de incluir novedades en las aplicaciones antes de que las incluya la competencia. Por todo lo anterior, han surgido libreras y frameworks especficos para el desarrollo de aplicaciones con JavaScript. Utilizando estas libreras, se reduce el tiempo de desarrollo y se tiene la seguridad de que las aplicaciones funcionan igual de bien en cualquiera de los navegadores ms populares. Aunque se han publicado decenas de libreras y frameworks, a continuacin se van a mostrar las dos ms populares: Prototype (junto con script.aculo.us) y jQuery. Script.aculo.us es una de las muchas libreras que han surgido para facilitar el desarrollo de aplicaciones JavaScript y que estn basadas en Prototype. El autor original de la librera es Thomas Fuchs, aunque actualmente recibe contribuciones de numerosos programadores, ya que la librera se distribuye de forma completamente gratuita y dispone de una buena documentacin. La librera est dividida en varios mdulos: Efectos: permite aadir de forma muy sencilla efectos especiales a cualquier elemento de la pgina. La librera incluye una serie de efectos bsicos y otros efectos complejos construidos con la combinacin de esos efectos bsicos. Entre los efectos prediseados se encuentran el parpadeo, movimiento rpido, aparecer/desaparecer, aumentar/disminuir de tamao, desplegarse, etc. Controles: define varios controles que se pueden aadir directamente a cualquier aplicacin web. Los tres controles que forman este mdulo son: "arrastrar y soltar", que permite definir los elementos que se pueden arrastrar y las zonas en las que se pueden soltar elementos; "autocompletar", que permite definir un cuadro de texto en el que los valores que se escriben se autocompletan con ayuda del servidor; editor de contenidos, que permite modificar los contenidos de cualquier pgina web aadiendo un sencillo editor AJAX en cada elemento. Utilidades: la utilidad principal que incluye se llama builder, que se utiliza para crear fcilmente nodos y fragmentos complejos de DOM. La documentacin de script.aculo.us es muy completa e incluye muchos ejemplos, por lo que a continuacin slo se muestra el uso de uno de sus componentes ms populares. En uno de los ejercicios anteriores, se realizaba un ejemplo de autocompletar el texto introducido por el usuario. El cdigo completo del ejercicio ocupa ms de 140 lneas. El siguiente cdigo hace uso de script.aculo.us para conseguir el mismo resultado con un 90% menos de lneas de cdigo:
window.onload = function() { // Crear elemento de tipo <div> para mostrar las sugerencias del servidor var elDiv = Builder.node('div', {id:'sugerencias'}); document.body.appendChild(elDiv);
new Ajax.Autocompleter('municipio', 'sugerencias', 'http://localhost/autocompletaMunicipios.php?modo=ul', {paramName: 'municipio'} ); } La librera jQuery jQuery es la librera JavaScript que ha irrumpido con ms fuerza como alternativa a Prototype. Su autor original es John Resig, aunque como sucede con todas las libreras exitosas, actualmente recibe contribuciones de decenas de programadores. jQuery tambin ha sido programada de forma muy eficiente y su versin comprimida apenas ocupa 20 KB. jQuery comparte con Prototype muchas ideas e incluso dispone de funciones con el mismo nombre. Sin embargo, su diseo interno tiene algunas diferencias drsticas respecto a Prototype, sobre todo el"encadenamiento" de llamadas a mtodos. La documentacin de jQuery es muy completa en ingls e incluye muchos ejemplos. Adems, tambin existen algunos recursos tiles en espaol para aprender su funcionamiento bsico.