AJAX入门之XMLHttpRequest概述

在使用 XMLHttpRequest 对象发送请求和处理响应之前,必须先用 JavaScript 创建一个 XMLHttpRequest 对象。由于 XMLHttpRequest 不是一个 W3C 标准,所以可以采用多种方法使用 JavaScript 来创建 XMLHttpRequest 的实例。 Internet ExplorerXMLHttpRequest实现为一个ActiveX对象,其他浏览器(如FirefoxSafariOpera)把它实现为一个本地JavaScript 对象。由于存在这些差别, JavaScript 代码中必须包含有关的逻辑,从而使用 ActiveX 技术或者使用本地 JavaScript 对象技术来创建 XMLHttpRequest 的一个实例。

  很多人可能还记得从前的那段日子,那时不同浏览器上的 JavaScript DOM 实现简直千差万别,听了上面这段话之后,这些人可能又会不寒而栗。幸运的是,在这里为了明确该如何创建 XMLHttpRequest 对象的实例,并不需要那么详细地编写代码来区别浏览器类型。你要做的只是检查浏览器是否提供对 ActiveX 对象的支持。如果浏览器支持 ActiveX 对象,就可以使用 ActiveX 来创建 XMLHttpRequest 对象。否则,就要使用本地 JavaScript 对象技术来创建。代码清单 2-1 展示了编写跨浏览器的 JavaScript 代码来创建 XMLHttpRequest 对象实例是多么简单。

  代码清单 2-1   创建 XMLHttpRequest 对象的一个实例

var xmlHttp;

function createXMLHttpRequest() {
  if (window.ActiveXObject) {
   xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  }
  else if (window.XMLHttpRequest) {
   xmlHttp = new XMLHttpRequest();
  }
}



  可以看到,创建 XMLHttpRequest 对象相当容易。首先,要创建一个全局作用域变量 xmlHttp 来保存这个对象的引用。 createXMLHttpRequest 方法完成创建 XMLHttpRequest 实例的具体工作。这个方法中只有简单的分支逻辑(选择逻辑)来确定如何创建对象。对 window.ActiveXObject 的调用会返回一个对象,也可能返回 null if 语句会把调用返回的结果看作是 true false (如果返回对象则为 true ,返回 null 则为 false ),以此指示浏览器是否支持 ActiveX 控件,相应地得知浏览器是不是 Internet Explorer 。如果确实是,则通过实例化 ActiveXObject 的一个新实例来创建 XMLHttpRequest 对象,并传入一个串指示要创建何种类型的 ActiveX 对象。在这个例子中,为构造函数提供的字符串是 Microsoft.XMLHTTP ,这说明你想创建 XMLHttpRequest 的一个实例。

  如果 window.ActiveXObject 调用失败(返回 null ), JavaScript 就会转到 else 语句分支,确定浏览器是否把 XMLHttpRequest 实现为一个本地 JavaScript 对象。如果存在 window.

   XMLHttpRequest ,就会创建 XMLHttpRequest 的一个实例。

  由于 JavaScript 具有动态类型特性,而且 XMLHttpRequest 在不同浏览器上的实现是兼容的,所以可以用同样的方式访问 XMLHttpRequest 实例的属性和方法,而不论这个实例创建的方法是什么。这就大大简化了开发过程,而且在 JavaScript 中也不必编写特定于浏览器的逻辑。
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值