# Xajax

Xajax es una biblioteca código abierto de PHP capaz de generar aplicaciones Web con tecnología AJAX.
Xajax utiliza una forma de trabajo de funciones, designando qué funciones de código PHP se convierten en funciones AJAX.

## Introducción

AJAX se ha convertido en una de las tecnologías más populares para la creación de aplicaciones Web dinámicas. Por tal razón hay una gran cantidad de bibliotecas y frameworks que nos permiten hacer uso de esta tecnología de una manera sencilla y cómoda. Algunos de ellos son Prototype, script.aculo.us, Google Web Toolkit (GWT), Xajax entre otros. En este artículo se realizará una comparación entre las Web Tradicionales y la introducción de la tecnología AJAX en las mismas, pero principalmente se centrará en la implementación de AJAX utilizando la biblioteca Xajax.

## Web Tradicional y la implementación de AJAX

Uno de los inconvenientes más comunes a la hora de diseñar una interfaz de aplicación Web es que una vez que la página se ha descargado en el cliente, la conexión con el servidor se corta. Cualquier intento de dinamismo en la interfaz por parte del cliente requiere una comunicación con el servidor para la recarga (proceso que tiende a convertir la aplicación poco elegante y lenta).
En el modelo tradicional de aplicaciones Web el usuario envía una petición al servidor requiriendo una página, la cual es construida y enviada al navegador. Esta página incluye un formulario HTML para capturar datos del usuario. Una vez que el usuario reenvía los datos al servidor, la siguiente página será generada y enviada dependiendo del valor de dichos datos, y así el proceso continúa. Supongamos una aplicación de escritorio para el registro de un número de serie. Según convenga, puede plantearse de diversas formas, una vez hemos terminado de rellenar los correspondientes cuadros de texto con los caracteres del código, podríamos hacer aparecer un tick verde a la derecha indicando que hemos introducido un código válido. Tan pronto como se introduce el código, la aplicación puede comprobar su validez y responder.
En contraste con el ejemplo anterior pero esta vez orientado en una interfaz Web. Por supuesto, todos los cuadros de textos donde introducir el código serán idénticos, pero al rellenarlos, el usuario tendrá que enviar esos datos al servidor para que este valide el código. Una nueva página será entonces cargada informando del éxito o fracaso de la operación, y en caso de fallo, el usuario tendrá que volver atrás e intentarlo de nuevo cuantas veces sea necesario. Una solución a estos problemas se presenta con el objeto XMLHttpRequest. Este objeto, ahora disponible como objeto nativo tanto en Firefox como en otros navegadores existentes, permite a JavaScript realizar peticiones al servidor remoto sin la necesidad de recargar la página. En esencia, pueden realizarse peticiones y recibir respuestas HTTP completamente en segundo plano y sin que el usuario experimente ninguna interrupción visual.
Con la introducción de AJAX (Ashyncronous JavaScript And XML) en aplicaciones Web el manejo del objeto XMLHttpRequest se hace mucho más sencillo. Cuando el usuario interactúa con la Web y genera un suceso, se crea y configura un objeto XMLHttpRequest, que posteriormente realiza una llamada al servidor solicitando el manejo de ese evento. La petición se procesa en el servidor y retorna una respuesta que puede ser un documento XML, texto plano, JavaScript, etc. que contienen el resultado de dicha petición. Luego el objeto XMLHttpRequest llama a la función callback para procesar el resultado y finalmente se actualiza el DOM (Documen Object Model) de la página con la petición dependiendo del resultado devuelto.
De esta manera AJAX permite que la velocidad de navegación y dinamismo incrementen notablemente, dando como resultado aplicaciones Web rápidas y fáciles de usar.

## Biblioteca Xajax

Xajax es una biblioteca de código abierto para PHP que permite crear de manera fácil y simple aplicaciones Web basadas en AJAX usando además HTML, CSS, y Javascript. Las aplicaciones desarrolladas con Xajax pueden comunicarse asíncronamente con funciones que se encuentran del lado del servidor y así actualizar el contenido de una página sin tener que recargarla nuevamente, su última versión es la 0.5 Final que cambia ligeramente comparado con las versiones anteriores 2.5.x y anteriores.
En un principio se crea una instancia de objeto Xajax (xajax object). Este objeto manejará todo el procesamiento a través de Xajax. En segundo lugar debemos registrar todas las funciones que hemos definido previamente en el objeto Xajax, esto se puede hacer usando el método xajax->register. Finalmente todas las respuestas serán procesadas utilizando el método xajax->processRequest.

## Características

En la actualidad se encuentran diversas clases de bibliotecas y frameworks de AJAX disponibles para los desarrolladores de aplicaciones Web. Algunas de ellas son Prototype y Script.aculo.us. Sin embargo para optar por estas soluciones los desarrolladores deben tener un conocimiento, si bien no muy elevado, pero si sólido de Javascript. Por tal hecho, la mayoría de ellos y sobre todo los que utilizan PHP, al hacer uso de estos frameworks podrían encontrar dificultades.
Por otro lado, la biblioteca Xajax es una biblioteca puramente centrada en PHP. Con la introducción de la misma el manejo de AJAX en PHP se hace mucho más sencillo y sobre todo solo se necesita escribir sentencias muy cortas y simples en Javascript, lo que supone, según sus creadores, una ventaja frente a otras soluciones.
Otras de las características son:
* Xajax es compatible con Google Chrome, Mozilla Firefox, Internet Explorer, Opera y Safari
* Xajax puede ser usado para actualizar estilos, clases CSS, botones de selección, casillas de verificación y botones de radio o cualquier otro atributo de un elemento
* Cada función registrada para ser accesible a través de Xajax puede tener distintos tipos de petición.

## Funcionamiento

Paso 1: Incluir la biblioteca Xajax
Como primer paso debemos incluir la biblioteca Xajax de la siguiente manera:
Paso 2: Creamos una instancia del objeto Xajax
Paso 3: Registramos las funciones PHP que queremos hacer accesibles desde JavaScript
Paso 4: Escribimos las funciones PHP que vamos a registrar, no hay que olvidarse de que debemos devolver el XML
Paso 5: Le indicamos a Xajax que procese las peticiones:
Paso 6: Debemos incluir el script Javascript entre las cabeceras HEAD de nuestro código HTML
Paso 7: Llamamos a la función desde un evento cualquiera