dimecres, 2 d’abril del 2008

AJAX. L'objecte XMLHttpRequest

L'objecte XMLHttpRequest és bàsic per permetre una connexió asíncrona amb el servidor.Aquest objecte ens permet enviar i rebre una pàgina en qualsevol format, ja sigui XML o HTML.
La creació d'un objecte d'aquest tipus dependrà del navegador que estem utilitzant (Firefox o Internet Explorer) ja que aquest últim no l'incorpora en JavaScript sino en un objecte ActiveX.Per fer-ho compatible amb IExplorer, el codi és el següent:

if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

i per Firefox i altres navegadors, és:

if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();

Per tal de simplificar el codi per a la detecció del navegador, implementarem una funció que ens retornarà l'objecte XMLHttpRequest per un navegador en concret.

function crearXMLHttpRequest()
{
var xmlHttp=null;
if (window.ActiveXObject)
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
else
if (window.XMLHttpRequest)
xmlHttp = new XMLHttpRequest();
return xmlHttp;
}

Les principals propietats de l'objecte XMLHttpRequest són:

onreadystatechange. Enmagatzema el nom de la funció que s'executarà quan l'objecte XMLHttpRequest canvïi d'estat.

readyState. Guarda l'estat de la petició feta al servidor. Poden haver-hi fins a cinc estats diferents:
0 - no inicialitzat. El métode OPEN no ha estat cridat.
1 - carregant. El métode OPEN ha estat cridat.
2 - carregat. El métode SEND ha estat cridat i ja tenim la capçalera de la petició HTTP i l'status.
3 - interactiu. La propietat responseText té dades parcials.
4 - completat. La propietat responseText disposa de totes les dades de la petició HTTP al servidor.

responseText.
Guarda l'string retornat pel servidor després d'haver fet la petició.
responseXML.
Similiar a l'anterior amb la diferència que l'string retornat és en format XML.

Els métodes principals de l'objecte XMLHttpRequest són:

open.
Crea una petició HTTP al servidor.
send.
Envia la petició al servidor.

continuarà ...