Ajax基础教程(2)-使用XMLHttpRequest对象 2.1 概述

在使用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中也不必编写特定于浏览器的逻辑。

返回“Ajax基础教程-目录”

时间: 2024-10-08 16:29:33

Ajax基础教程(2)-使用XMLHttpRequest对象 2.1 概述的相关文章

Ajax基础教程(2)-使用XMLHttpRequest对象 2.9 小结

尽管Ajax风格的技术已经用了很多年,但直到最近XMLHttpRequest对象才得到现代浏览器的采纳,而这也为开发丰富的Web应用开启了一个新的时代.在本章中,我们讨论了Ajax核心(即XMLHttpRequest对象)的相关基础知识.我们了解了XMLHttpRequest对象的方法和属性,而且展示了使用XMLHttpRequest对象的简单示例.可以看到,这个对象相当简单,无需你考虑其中很多的复杂性.适当地使用JavaScript,再加上基本的DOM管理,Ajax可以提供高度的交互性,而这在

Ajax基础教程(2)-使用XMLHttpRequest对象 2.7 DOM Level 3 加载和保存规约

到目前为止,我们讨论的解决方案都不是标准.尽管XMLHttpRequest得到了广泛支持,但是你已经看到了,创建XMLHttpRequest对象的过程会随浏览器不同而有所差异.许多人错误地认为Ajax得到了W3C的支持,但实际上并非如此.W3C在一个新标准中解决了这一问题以及其他缺点,这个标准的名字相当长:DOM Level 3 加载和保存规约.这个规约的设计目的是以一种独立于平台和语言的方式,用XML内容修改DOM文档的内容.2004年4月提出了1.0版本,但到目前为止,还没有浏览器实现这个规

Ajax基础教程(2)-使用XMLHttpRequest对象 2.4 GET与POST

你可能想了解GET和POST之间有什么区别,并想知道什么时候使用它们.从理论上讲,如果请求是幂等的就可以使用GET,所谓幂等是指多个请求返回相同的结果.实际上,相应的服务器方法可能会以某种方式修改状态,所以一般情况下这是不成立的.这只是一种标准.更实际的区别在于净荷的大小,在许多情况下,浏览器和服务器会限制URL的长度URL用于向服务器发送数据.一般来讲,可以使用GET从服务器获取数据:换句话说,要避免使用GET调用改变服务器上的状态. 一般地,当改变服务器上的状态时应当使用POST方法.不同于

Ajax基础教程(2)-使用XMLHttpRequest对象 2.3 交互示例

看到这里,你可能想知道典型的Ajax交互是什么样.图2-1显示了Ajax应用中标准的交互模式. 图2-1 标准Ajax交互 不同于标准Web客户中所用的标准请求/响应方法,Ajax应用的做法稍有差别. 1. 一个客户端事件触发一个Ajax事件.从简单的onchange事件到某个特定的用户动作,很多这样的事件都可以触发Ajax事件.可以有如下的代码: <input type="text"d="email" name="email" onblu

Ajax基础教程(2)-使用XMLHttpRequest对象 2.2 方法和属性

表2-1显示了XMLHttpRequest对象的一些典型方法.不要担心,稍后就会详细介绍这些方法. 下面来更详细地讨论这些方法. void open(string method, string url, boolean asynch, string username, string password):这个方法会建立对服务器的调用.这是初始化一个请求的纯脚本方法.它有两个必要的参数,还有3个可选参数.要提供调用的特定方法(GET.POST或PUT),还要提供所调用资源的URL.另外还可以传递一个

Ajax基础教程(2)-使用XMLHttpRequest对象 2.8 DOM

我们一直在说DOM,如果你没有做过太多客户端的工作,可能不知道什么是DOM.DOM是一个W3C规约,可以以一种独立于平台和语言的方式访问和修改一个文档的内容和结构.换句话说,这是表示和处理一个HTML或XML文档的常用方法. 有一点很重要,DOM的设计是以对象管理组织(OMG)的规约为基础的,因此可以用于任何编程语言.最初人们把它认为是一种让JavaScript在浏览器间可移植的方法,不过DOM的应用已经远远超出这个范围. DOM实际上是以面向对象方式描述的对象模型.DOM定义了表示和修改文档所

AJAX基础教程及初步使用

ajax|基础教程 Ajax基础教程 什么是 AJAX? AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScript的两项强大性能.这两项性能在多年来一直被网络开发者所忽略,直到最近Gmail, Google suggest和google Maps的横空出世才使人们开始意识到其重要性. 这两项被忽视的性能是: 无需重新装载整个页面便能向服务器发送请求. 对XML文档的解析和处理. 步骤 1 – "请!" --- 如何发送一个HTTP请求 为了用

技术新知:AJAX基础教程

ajax|基础教程     什么是 AJAX? AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScript的两项强大性能.这两项性能在多年来一直被网络开发者所忽略,直到最近Gmail, Google suggest和google Maps的横空出世才使人们开始意识到其重要性. 这两项被忽视的性能是:     * 无需重新装载整个页面便能向服务器发送请求.    * 对XML文档的解析和处理. 步骤 1 – "请!" --- 如何发送一个HTTP

Ajax基础教程

ajax|基础教程 AJAX (异步 JavaScript 和 XML) 是个新产生的术语,专为描述JavaScript的两项强大性能.这两项性能在多年来一直被网络开发者所忽略,直到最近Gmail, Google suggest和google Maps的横空出世才使人们开始意识到其重要性.  这两项被忽视的性能是:  • 无需重新装载整个页面便能向服务器发送请求.  • 对XML文档的解析和处理. 步骤 1 – "请!" --- 如何发送一个HTTP请求 为了用JavaScript向服