viernes, 12 de enero de 2007

Objeto XMLHttpRequest

Tal como comentaba en una entrada anterior, vamos ahora a destripar el código JavaScript básico para crear el objeto XMLHttpRequest.

Analicemos el siguiente código:

var pagina_requerida = false;
if (window.XMLHttpRequest)
{
// Si es Mozilla, Safari etc
pagina_requerida = new XMLHttpRequest ();
} else if (window.ActiveXObject)
{
// pero si es IE
try
{
pagina_requerida = new ActiveXObject ("Msxml2.XMLHTTP");
}
catch (e)
{
// en caso que sea una versión antigua
try
{
pagina_requerida = new ActiveXObject ("Microsoft.XMLHTTP");
}
catch (e)
{
}
}
}
else
return false;

En esta parte del código es donde se crea la instancia del objeto XMLHttpRequest.

Como siguen existiendo diferencias de integración del objeto a nivel de navegador ( en Mozilla, Safari, etc, es un objeto nativo, y en IE previo a la v.7 es un ActiveX ) se debe comprobar el navegador del cliente y crear la instancia de una forma o de otra.

La mejor forma de comprobar el navegador del cliente es ver si soporta el objeto, así si se puede crear el objeto window.XMLHttpRequest es que el navegador es Mozilla o Safari, si no probamos con el ActiveX.

En el caso de IE se prueba el ActiveXObjetc("Msxml2.XMLHTTP") y si no funciona es que es una versión más antigua que utiliza ActiveXObject("Microsoft.XMLHTTP").

En el peor de los casos el navegador cliente no soporta XMLHttpRequest y no podremos utilizar AJAX.

Pero bueno, hasta aquí lo que tenemos es una nueva instancia del objeto XMLHttpRequest en la variable pagina_requerida en este caso, y es la que utilizaremos para la comunicación asíncrona con nuestro servidor web.

He visto otras formas de comprobar el navegador cliente para crear la instancia del objeto XMLHttpRequest pero esta me ha parecido la mejor.

Hoy hasta aquí. En próximas entregas veremos más en detalle la comunicación asíncrona con el servidor, la forma de enviar, recibir y tratar los datos, y la forma de actualizar partes de nuestra página sin recargarla.

3 comentarios:

  1. Hola Domk:

    Me parece muy interesante el tema de AJAX y estaría muy bien integrarlo con Velneo. He mirado un poco el tema a raiz de un post tuyo en el foro de Velneo y con PHP consigo que funcione bien porque puedo modificar los 'header' para devolver un XML.
    Quizás me puedas ayudar, ¿cómo se modifican los 'header' desde velneo?

    Un saludo

    ResponderEliminar
  2. Ahí es donde estoy precisamente, amigo, intentando poder modificar las cabeceras para que el cliente se entere de que lo que recibe es XML.

    En cuanto tenga algo definitivo te lo comento.

    Un saludo,

    ResponderEliminar
  3. Buenas,
    aunque este post tiene bastante tiempo, necesito cambiar el header del xml que genero desde velneo6.x

    He planteado la misma duda en el foro http://forum.velneo.com/es/viewtopic.php?t=23277

    Alguna pista?

    ResponderEliminar