初始化XMLHttpRequest对象

时间:2021-12-13 14:19:19
在使用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实例的属性的方法,不需要考虑创建该实例的方法是什么。