Método open del objeto XMLHttpRequest

Una vez que ya hemos creado el objeto XMLHttpRequest (ver entrada anterior) entonces podemos realizar las llamadas al servidor sin necesidad de recargar la página al completo. estas llamadas se hacen a través de la función open y tiene los siguientes parámetros:

ajaxNEW=makeAJAX();
ajaxNEW.open("GET",url,true);

el primer parámetro es el tipo de llamada y puede ser GET, POST o HEAD, luego veremos cada uno en detalle.
el segundo es la url que vamos a ejecutar y de la cual obtendremos la respuesta.
el tercero es si queremos hacerlo de forma asíncrona o no, generalmente es TRUE para que así no se recargue la página.
esta función tiene otros 2 parámetros para el acceso de páginas restringidas por usuario y contraseña pero nunca los he utilizado, los parámetros serían : usuario y password.
veamos ahora las distintas llamadas al método open.
GET
Esta función carga la respuesta generada de ejecutar la url en el div contenedor:

function carga(contenedor,url){
var contenedorLugar;
contenedorLugar = document.getElementById(contenedor);
ajaxNEW=makeAJAX();
ajaxNEW.open("GET",url,true);
ajaxNEW.onreadystatechange=function() {
if (ajaxNEW.readyState==4)
contenedorLugar.innerHTML = ajaxNEW.responseText;
}
ajaxNEW.send(null)
}

el método onreadystatechange lo veremos en detalle en el siguiente artículo. La carácterística del método GET es que como en cualquier navegador las variables que se pasen se pasan dentro del valor url ej index.php?page=hola&valor=12.
puedde o no recibir respuesta, si solo quieres ejecutar algo en el server sin recibir respuesta pues el metodo onreadystatechange sería vacío.
POST
esté metodo sería enviando los valores en vez de por url sino por post como si de un formulario se tratare, aclaro que se puede hacer una unión de ambos, el envío por GET y por POST a la vez, en este caso pondriamos en el método open POST.

function compruebaFecha(contenedor,url){
contenedor_mensajes = document.getElementById('contenedor');
fecha = '2008-12-25';
hora = '02';
minuto = '09';
// se muestran como si se enviaran por url o sea separadas por &
variables_post = 'fecha='+fecha+'&hora='+hora+'&minuto='+minuto+'';
ajaxNEW=makeAJAX();
// aqui en la url también se pueden enviar variables estas se recibirian por GET
ajaxNEW.open("POST","url",true);
ajaxNEW.onreadystatechange=function() {
// lo que queramos hacer con la respuesta
}
ajaxNEW.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
// la diferencia es que en este el método send no envía un valor nulo sino las variables que queremos se reciban como post
ajaxNEW.send(variables_post);
}

HEAD
con esta opción el servidor solo retornará las cabeceras del resultado que se obtenga luego de ejecutar la url, esta cabecera está compuesta por:

HTTP/1.1 200 OK
Server: Microsoft-IIS/4.0
Cache-Control: max-age=172800
Expires: Sat, 06 Apr 2002 11:34:01 GMT
Date: Thu, 04 Apr 2002 11:34:01 GMT
Content-Type: text/html
Accept-Ranges: bytes
Last-Modified: Thu, 14 Mar 2002 12:06:30 GMT
ETag: "0a7ccac50cbc11:1aad"
Content-Length: 52282

para obtener estos resultados usaríamos los métodos:
getAllResponseHeaders() para todos ó getResponseHeader("Nombre de la propiedad") para una sola propiedad.
en el siguiente artículo veremos como tratar estas respuestas con el método onreadystatechange.

Comentarios