En el artículo anterior vimos la forma de obtener el objeto XMLHTTP en la mayor parte de los navegadores para después crear nuestra primera aplicación Ajax. Sin embargo, a pesar de conseguir que la aplicación funcionase sin problemas, no comentamos nada acerca del funcionamiento de dicho objeto.
A continuación vamos a ver detalladamente las principales propiedades y métodos del objeto XMLHTTP para comprender mejor su funcionamiento.
Vamos a recordar la función genérica "enviaPeticion" que habíamos creado para hacer llamadas Ajax, ya que esta es la que utiliza todos los métodos y propiedades del objeto XMLHTTP que necesitaremos en un principio.
1 function enviaPeticion(url,callback) { 2 objAjax = getXMLHTTP(); 3 objAjax.open("GET",url,true); 4 objAjax.onreadystatechange = function() { 5 if (objAjax.readyState == 4) { 6 callback(objAjax.responseText); 7 } 8 } 9 objAjax.send(null); 10 }
En primer lugar, el método open (línea 3). Sirve para especificar algunos atributos de la petición HTTP:
En segundo lugar, la propiedad onreadystatechange (línea 4), que nos servirá para especificar el manejador del evento que se lanza con cada cambio de estado. Esta es la propiedad que nos permite definir nuestro callback controlando que el estado que se ha alcanzado después del cambio es el correcto.
La propiedad readyState (línea 5), que devuelve el estado actual de la petición. Los estados pueden ser:
La propiedad responseText (línea 6), que nos devuelve el mensaje de respuesta que se ha recibido en un string.
Por último, aunque no por ello menos importante, el método send (línea 9), que envía finalmente la petición HTTP. Una vez ejecutado este método se seguirá procesando el script (o no) en función de lo que hayamos indicado con el método open.
Existen algunas propiedades más del objeto XMLHTTP que no hemos utilizado en el ejemplo pero que podrían sernos útiles en otros casos. Por ejemplo:
Con esta breve descripción de los métodos y propiedades del objeto XMLHTTP y el ejemplo que veíamos en el artículo anterior, seguro que ya podemos empezar a imaginar montones de utilidades basadas en Ajax que podríamos implementar.