`

获取XmlHttpRequest对象

    博客分类:
  • AJAX
阅读更多

    还记得几年前的那些讨厌的浏览器战争吗?没有一样东西在不同的浏览器上得到同样的结果。不管您是否相信,这些战争仍然在继续,虽然规模较小。但令人奇怪的是,XMLHttpRequest 成了这场战争的牺牲品之一。因此获得 XMLHttpRequest 对象可能需要采用不同的方法。下面我将详细地进行解释。

 

使用 Microsoft 浏览器

    Microsoft 浏览器 Internet Explorer 使用 MSXML 解析器处理 XML。因此如果编写的 Ajax 应用程序要和 Internet Explorer 打交道,那么必须用一种特殊的方式创建对象。

但并不是这么简单。根据 Internet Explorer 中安装的 JavaScript 技术版本不同,MSXML 实际上有两种不同的版本,因此必须对这两种情况分别编写代码。下面的代码在 Microsoft 浏览器上创建了一个 XMLHttpRequest

 

在Microsoft浏览器上创建XMLHttpRequest对象

var xmlHttp=false;
try{
    xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
    try{
        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
    }catch(e2){
        xmlHttp=false;
    }
}

 

xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

这两行代码基本上就是尝试使用一个版本的 MSXML 创建对象,如果失败则使用另一个版本创建该对象。不错吧?如果都不成功,则将 xmlHttp 变量设为 false,告诉您的代码出现了问题。如果出现这种情况,可能是因为安装了非 Microsoft 浏览器,需要使用不同的代码。

 

处理Mozilla和非Microsoft浏览器

    如果选择的浏览器不是 Internet Explorer,或者为非 Microsoft 浏览器编写代码,就需要使用不同的代码。事实上就是下面一行简单代码:

var xmlHttp = new XMLHttpRequest();

这行简单得多的代码在 Mozilla、Firefox、Safari、Opera 以及基本上所有以任何形式或方式支持 Ajax 的非 Microsoft 浏览器中,创建了 XMLHttpRequest 对象。

 

结合起来

    关键是要支持所有 浏览器。谁愿意编写一个只能用于 Internet Explorer 或者非 Microsoft 浏览器的应用程序呢?或者更糟,要编写一个应用程序两次?当然不!因此代码要同时支持 Internet Explorer 和非 Microsoft 浏览器。代码如下。

 

以支持多种浏览器的方式创建XMLHttpRequest对象

/* Create a new XMLHttpRequest object to talk to the Web server */
var xmlHttp = false;
/*@cc_on @*/
/*@if (@_jscript_version >= 5)
try {
  xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
  try {
    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (e2) {
    xmlHttp = false;
  }
}
@end @*/
if (!xmlHttp && typeof XMLHttpRequest != 'undefined') {
  xmlHttp = new XMLHttpRequest();
}

 

这段代码的核心分为三步:

  1. 建立一个变量 xmlHttp 来引用即将创建的 XMLHttpRequest 对象。
  2. 尝试在 Microsoft 浏览器中创建该对象:
    • 尝试使用 Msxml2.XMLHTTP 对象创建它。
    • 如果失败,再尝试 Microsoft.XMLHTTP 对象。
  3. 如果仍然没有建立 xmlHttp,则以非 Microsoft 的方式创建该对象。

最后,xmlHttp 应该引用一个有效的 XMLHttpRequest 对象,无论运行什么样的浏览器。

 

分享到:
评论

相关推荐

    三种方式获取XMLHttpRequest对象

    本篇文章将详细解析获取XMLHttpRequest对象的三种常见方法。 1. **创建XMLHttpRequest对象的原始方式** 在早期的浏览器实现中,XMLHttpRequest对象的创建方式因浏览器内核不同而有所差异。对于基于Gecko内核(如...

    创建XMLHttpRequest对象的方法.rar

    本压缩包文件"创建XMLHttpRequest对象的方法.rar"包含了一份关于如何创建XMLHttpRequest对象的详细教程,其核心内容可以从以下几个方面来理解: 1. **XMLHttpRequest对象的创建** 在JavaScript中,XMLHttpRequest...

    Ajax中的XMLHttpRequest对象详解

    Ajax 中的 XMLHttpRequest 对象详解 XMLHttpRequest 对象是 Ajax 技术的核心,它是一种浏览器对象,用于模拟 HTTP 的 GET 和 POST 请求。配合 JavaScript,可以实现页面数据在无刷新下的定时更新。 XMLHttpRequest...

    全面剖析XMLHttpRequest对象

    XMLHttpRequest对象还提供了错误处理机制,如onerror和ontimeout事件,以及getAllResponseHeaders()和getResponseHeader()方法,用于获取服务器响应的头信息。 在实际应用中,开发者通常会结合DOM操作和JavaScript...

    用js创建XMLHttpRequest对象池

    为了优化这一过程,我们可以考虑创建一个XMLHttpRequest对象池,复用这些对象而不是每次请求都新建。 首先,理解XMLHttpRequest的基本工作原理至关重要。当一个XHR对象被创建时,它会占用一定的系统资源,包括内存...

    全面剖析 Ajax XMLHttpRequest对象

    XMLHttpRequest对象是Ajax技术的核心,它是现代Web应用中用于实现客户端与服务器间异步数据交换的关键组件。在不刷新整个页面的情况下,XMLHttpRequest允许开发者通过JavaScript动态更新网页内容,极大地提升了用户...

    全面剖析XMLHttpRequest对象.doc

    ### 全面剖析XMLHttpRequest对象 #### 引言:AJAX与XMLHttpRequest的革命 XMLHttpRequest对象是现代网络开发中不可或缺的一部分,它是AJAX(Asynchronous JavaScript and XML)技术的核心,使得网页能够在不重新...

    创建XMLHttpRequest对象

    ### 创建XMLHttpRequest对象 在现代Web开发中,异步JavaScript和XML(通常称为AJAX)是一种重要的技术,它允许网页在不重新加载整个页面的情况下与服务器进行数据交换。这一过程的核心在于`XMLHttpRequest`对象的...

    _探讨Ajax获取表单值向Servlet传递的设计方案.doc

    在不同的浏览器中,XMLHttpRequest 对象的获取方式不同,因此我们需要写一个初始化 XMLHttpRequest 对象的方法。 在 JS 代码 1 中,我们定义了两个函数:doGet 和 doPost,它们分别用于实现 GET 和 POST 方式的异步...

    VS2008 AJAX控件介绍 AJAX组成及XMLHttpRequest对象

    JavaScript通过XMLHttpRequest对象可以异步地发送GET或POST请求,并获取服务器的响应数据。 3. **DOM(Document Object Model)**:用于操作HTML或XML文档结构,通过JavaScript可以动态修改页面内容。 4. **CSS...

    全面剖析XMLHttpRequest对象.txt

    考虑到XMLHttpRequest在实现Ajax中的重要性,下面给出一个简单的示例来展示如何使用XMLHttpRequest对象获取远程数据并更新页面内容。 ```javascript var xhr = new XMLHttpRequest(); xhr.onreadystatechange = ...

    XMLHttpRequest对象手册.pdf

    ### XMLHttpRequest对象详解 #### 一、引言 随着互联网技术的发展与演进,网页应用从简单的静态页面逐渐向动态交互式应用转变。其中,Ajax(Asynchronous JavaScript and XML)技术的出现极大地推动了这一进程。**...

    使用XMLHttpRequest对象.doc

    XMLHttpRequest对象是Ajax技术的核心,它允许Web应用程序在不刷新整个页面的情况下与服务器进行异步数据交换,从而实现页面的局部更新。这个对象在不同浏览器中的实现方式有所不同,最初由IE5作为ActiveX组件引入,...

    ajax 入门基础之 XMLHttpRequest对象总结

    **Ajax入门基础之XMLHttpRequest对象总结** Ajax,即异步JavaScript和XML,是一种在无需刷新整个页面的情况下更新部分网页的技术。在Ajax的核心中,XMLHttpRequest(XHR)对象扮演着至关重要的角色,它允许...

Global site tag (gtag.js) - Google Analytics