La manera correcta de crear un XMLHttpRequest

Mucha gente aún no tiene claro que es AJAX, he escuchado comentarios de personas que creen que AJAX es un lenguaje, algunos otros creen que es un programa o aplicación como dreamweaver o front page.
Bueno, hoy quiero explicar que es en realidad AJAX, y como crear correctamente una instancia del objeto XMLHttpRequest.
Antes que nada déjame [...]

Mucha gente aún no tiene claro que es AJAX, he escuchado comentarios de personas que creen que AJAX es un lenguaje, algunos otros creen que es un programa o aplicación como dreamweaver o front page.

Bueno, hoy quiero explicar que es en realidad AJAX, y como crear correctamente una instancia del objeto XMLHttpRequest.

Antes que nada déjame aclararte que AJAX no es nada nuevo, la w3 lo define como AJAX is a browser technology independent of web server software. Esto nos dice que AJAX es una tecnología independiente del servidor, en otras palabras es simplemente una técnica de realizar peticiones con el explorador al servidor, en el servidor la aplicación puede estar desarrollada con cualquier lenguaje, como JAVA, ASP, PHP, Ruby, etc.

AJAX se basa en JavaScript, XML, HTML y CSS, todos estos lenguajes están estandarizados y como desarrolladores debemos seguir las especificaciones.

La pieza clave de AJAX es el objeto XMLHttpRequest, es el encargado de realizar las peticiones al servidor de una manera transparente al usuario, puede enviar peticiones por el método POST o GET, enviándole parámetros o información que el servidor necesite.

Ahora bien, he dicho que AJAX es una tecnología propia del explorador, aquí es donde surge un grave problema, y es el hecho de la existencia de diferentes exploradores, la principal diferencia esta entre MS Internet Explorer y la familia Mozilla, y es que existen diferentes métodos o maneras para crear una instancia del objeto XMLHttpRequest, pero ¿Cuál es la mejor manera de hacerlo?

Mientras que en Mozilla el objeto XMLHttpRequest es un objeto nativo del explorador, en IE 5.x, IE6.x tienes que utilizar un ActiveX para hacer la instancia, IE7 ahora ya trae nativo el objeto, no hay necesidad de invocar el ActiveX.

Teniendo en cuenta este escenario, la mejor manera de crear una instancia es:
[code lang="javascript"]
function getXMLHttpRequest(){
var aVersions = [ "MSXML2.XMLHttp.5.0",
"MSXML2.XMLHttp.4.0","MSXML2.XMLHttp.3.0",
"MSXML2.XMLHttp","Microsoft.XMLHttp"
];

if (window.XMLHttpRequest){
// para IE7, Mozilla, Safari, etc: que usen el objeto nativo
return new XMLHttpRequest();
}else if (window.ActiveXObject){
// de lo contrario utilizar el control ActiveX para IE5.x y IE6.x
for (var i = 0; i < aVersions.length; i++) {
try {
var oXmlHttp = new ActiveXObject(aVersions[i]);
return oXmlHttp;
}catch (error) {
//no necesitamos hacer nada especial
}
}
}
}
[/code]

Si has notado, he realizado un ciclo de todas las versiones que hay del ActiveX ordenadas de la última a la primera, esto es para asegurarnos que estamos instanciando la ultima versión instalada en el cliente, para tener así el máximo rendimiento.

He visto en Internet muchos tutoriales acerca de cómo hacer esto, pero la mayoría de estos no toman en cuenta los puntos que estoy tratando aquí, los cuales nos darán un mayor rendimiento en nuestras aplicaciones, asegurándonos que el cliente tendrá el acceso a nuestra aplicación independientemente del explorador que esté utilizando.

Referencias:

http://www.w3schools.com/ajax/ajax_intro.asp
http://getahead.org/blog/joe/2005/10/03/1128330948468.html
http://blogs.msdn.com/ie/archive/2006/01/23/516393.aspx
http://www.codeguru.com/cpp/i-n/internet/xml/article.php/c11937/

No related posts.

Related posts brought to you by Yet Another Related Posts Plugin.

Leave Your Response

* Name, Email, Comment are Required