初始化XMLHttpRequest对象
程序员文章站
2022-06-10 17:25:03
...
在使用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实例的属性的方法,不需要考虑创建该实例的方法是什么。