初始化XMLHttpRequest对象

在使用XMLHttpRequest对象发送请求和处理响应之前,首先需要初始化该对象,由于XMLHttpRequest不是一个W3C标准,所以对于不同的浏览器,初始化的方法也是不同的。
通常情况下,初始化XMLHttpRequest对象只需要考虑两种情况,一种是IE浏览器,另一种是非IE浏览器,下面分别进行介绍。
一 IE浏览器
IE浏览器把XMLHttpRequest实例化为一个ActiveX对象。具体方法如下:
var http_request = new ActiveXObject("Msxml2.XMLHTTP");
或者
var http_request = new ActiveXObject("Microsoft.XMLHTTP");
在上面的语法中,Msxml2.XMLHTTP和Microsoft.XMLHTTP是针对IE浏览器的不同版本而进行设置的,目前比较常用的是这两种。
 
二 非IE浏览器
非IE浏览器(例如,Firefox、Opera、Mozilla、Safari)把XMLHttpRequest对象实例化为一个本地JavaScript对象。具体方法如下:
var http_request = new XMLHttpRequest();
 
三 创建一个跨浏览器的XMLHttpRequest对象
创建一个跨浏览器的XMLHttpRequest对象其实很简单,只需要判断一下不同浏览器的实现方式,如果浏览器提供了XMLHttpRequest类,则直接创建一个该类的实例,否则实例化一个ActiveX对象。
具体代码如下: 
if (window.XMLHttpRequest) //非IE浏览器
{                        
      http_request = new XMLHttpRequest();
}
else if (window.ActiveXObject) //IE浏览器
{                   
	try 
	{
		http_request = new ActiveXObject("Msxml2.XMLHTTP");
    } 
	catch (e) 
	{
        try 
		{
			http_request = new ActiveXObject("Microsoft.XMLHTTP");
        }
		catch (e) 
		{
		}
    }
} 
 
在上面的代码中,调用window.ActiveXObject将返回一个对象,或是null。
由于JavaScript具有动态类型特性,而且XMLHttpRequest对象在不同浏览器上的实例是兼容的,所以可以用同样的方式访问XMLHttpRequest实例的属性的方法,不需要考虑创建该实例的方法是什么。

猜你喜欢

转载自cakin24.iteye.com/blog/2364608