AJAX入门之XMLHttpRequest慨述

翻译|其它|编辑:郝浩|2007-12-10 14:31:54.000|阅读 918 次

概述:

# 界面/图表报表/文档/IDE等千款热门软控件火热销售中 >>

  在使用 XMLHttpRequest 对象发送请求和处理响应之前,必须先用 JavaScript 创建一个 XMLHttpRequest 对象。由于 XMLHttpRequest 不是一个 W3C 标准,所以可以采用多种方法使用 JavaScript 来创建 XMLHttpRequest 的实例。Internet Explorer 把 XMLHttpRequest 实现为一个 ActiveX 对象,其他浏览器(如 Firefox、Safari 和 Opera)把它实现为一个本地 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 中也不必编写特定于浏览器的逻辑。


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@evget.com

文章转载自:个人博客

为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP