Ajax实战:XMLDocument和XMLHttpRequest对象

正如刚才看到的,我们可以使用IFrame以后台方式请求数据,但是这从本质上来说不过是一种hack式的临时解决方案。最初引入IFrame的设计意图是在页面上显示可见的内容,这种用法歪曲了这个意图。在流行的Web浏览器的更新版本中,引入了专门为异步数据传输而设计的对象,我们将会看到,它比IFrame用起来要方便得多。

XmlDocument和XMLHttpResuest对象并不是Web浏览器中DOM的标准扩展,它们只是碰巧得到了多数浏览器的支持。它们的设计目标很明确,就是用来以后台方式获取数据,这使得发出异步调用的业务使用起来非常流畅。两个对象都是源自微软私有的ActiveX组件,可以在IE浏览器中作为JavaScript对象来访问。其他的浏览器则依照相似的功能和API调用实现了自己的原生对象。两个对象执行的功能很相似,不过XMLHttpRequest可以更加精细地对请求进行控制。在本书中,我们将主要使用XMLHttpRequest,在这里我们简要介绍一下XmlDocument,以便你了解这个对象与XMLHttpRequest有哪些不同。代码清单2-8展示了一段简单创建XmlDocument对象的代码。

代码清单2-8 getXmlDocument()函数

在大多数现代浏览器中,这个函数都能返回一个具有相同API的XmlDocument对象,尽管在不同的浏览器中创建文档的方式有很大不同。

这段代码检查文档对象是否支持创建一个原生的XmlDocument对象所需的implementation属性(在最近的Mozilla和Safari浏览器中都可以找到这个属性)。如果没有找到,它将测试浏览器是否支持ActiveX对象(只有微软的浏览器才能够支持),如果支持,它将尝试定位一个合适的对象。这段脚本优先使用较新一些的第二版MSXML库。

注意 检查浏览器的厂商和版本号信息,并且使用这些信息来开发用于不同浏览器的分支代码,是一种很常见的做法。在我们看来,这种做法容易导致错误,因为它无法预期浏览器的未来版本,并且还会将有能力执行这段脚本的浏览器排除在外。在getXmlDocument()函数中,我们没有尽力去猜测浏览器的版本,而是直接检查特定的对象是否可用。这个方法也称作对象检测(object detection),可以更容易地支持浏览器未来的版本,以及那些我们没有明确测试过的不常见的浏览器,通常这会使得代码更加健壮。

代码清单2-9的代码采用与前面的代码类似的方式获得XMLHttpRequest对象,不过略微简单一些。

代码清单2-9 getXmlHttpRequest()函数

同样地,我们使用对象检测来测试是否支持原生的XMLHttpRequest对象,如果不支持,再测试是否支持ActiveX对象。在两者都不支持的浏览器中,我们简单地返回null。如何更加优雅地处理失败的情况呢?这个问题我们留到第6章再来更加详细地探讨。

我们已经创建了向服务器发送请求的对象,下面我们用它来做什么呢?

时间: 2024-10-30 05:30:38

Ajax实战:XMLDocument和XMLHttpRequest对象的相关文章

AJAX客户端说明,XMLHttpRequest对象

ajax|request|xml|xmlhttprequest|对象|客户端 在CommunityServer中运用了自己的AJAX机制,没有借助其他的辅助控件.其中客户的XMLHttpRequest对象的封装,就足以让人大饱眼福,在一般的浏览器其都能够运行AJAX.下面我们来学习学习这个咚咚,希望能给更多的人带来帮助.  首先当然是要了解一下浏览器中的XMLHttp对象了:  XMLHTTP方法:           备注:客户机可以使用XMLHTTP对象发送任意的HTTP请求,接受HTTP应

AJax 学习笔记一(XMLHTTPRequest对象)_AJAX相关

现在很多公司都在做标准的静态页面,为了增强客户的体验效果,经常会涉及到AJax效果,而设计AJax使用的一种重要技术(工具)就是XMLHttpRequest对象了.今天学习了点关于XMLHttpRequest对象的一些方法和属性,有点体会,在这里也想记录起来. 1.何为XMLHttpRequest 定义:XMLHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部分

AJax 学习笔记一(XMLHTTPRequest对象)

现在很多公司都在做标准的静态页面,为了增强客户的体验效果,经常会涉及到AJax效果,而设计AJax使用的一种重要技术(工具)就是XMLHttpRequest对象了.今天学习了点关于XMLHttpRequest对象的一些方法和属性,有点体会,在这里也想记录起来. 1.何为XMLHttpRequest 定义:XMLHttp是一套可以在Javascript.VbScript.Jscript等脚本语言中通过http协议传送或从接收XML及其他数据的一套API.XmlHttp最大的用处是可以更新网页的部分

AJAX客户端说明,XMLHttpRequest对象_AJAX相关

在CommunityServer中运用了自己的AJAX机制,没有借助其他的辅助控件.其中客户的XMLHttpRequest对象的封装,就足以让人大饱眼福,在一般的浏览器其都能够运行AJAX.下面我们来学习学习这个咚咚,希望能给更多的人带来帮助.  首先当然是要了解一下浏览器中的XMLHttp对象了:  XMLHTTP方法:           备注:客户机可以使用XMLHTTP对象发送任意的HTTP请求,接受HTTP应答,还可以对应答的XML文档进行解析.           Open方法:初始

如何用ajax来创建一个XMLHttpRequest对象_基础知识

我每次创建一个对象,都要这样复杂吗?如下代码: JScript code: "testAjax.htm" 文件: 复制代码 代码如下: <html> <body> <script type="text/javascript"> function ajaxFunction() { var xmlHttp; try { // Firefox,Opera 8.0+,Safari xmlHttp=new XMLHttpRequest();

ajax 入门基础之 XMLHttpRequest对象总结_AJAX相关

XMLHttpRequest 提供客户端同http服务器通讯的协议 一:创建 IE : http_request = new ActiveXObject("Msxml2.XMLHTTP"); http_request = new ActiveXObject("Microsoft.XMLHTTP"); 非IE: http_request = new XMLHttpRequest(); 二:onreadystatechange 指定当readyState属性改变时的事件

ajax 入门基础之 XMLHttpRequest对象总结

XMLHttpRequest 提供客户端同http服务器通讯的协议 一:创建 IE : http_request = new ActiveXObject("Msxml2.XMLHTTP"); http_request = new ActiveXObject("Microsoft.XMLHTTP"); 非IE: http_request = new XMLHttpRequest(); 二:onreadystatechange 指定当readyState属性改变时的事件

AJAX核心对象-- XMLHttpRequest 对象使用详解 (一)

ajax|request|xml|xmlhttprequest|对象|详解 多数 Web 应用程序都使用请求/响应模型从服务器上获得完整的HTML 页面.常常是点击一个按钮,等待服务器响应,再点击另一个按钮,然后再等待,这样一个反复的过程.有了 Ajax 和 XMLHttpRequest 对象,就可以使用不必让用户等待服务器响应的请求/响应模型了. 本文中,Brett McLaughlin 介绍了如何创建能够适应不同浏览器的 XMLHttpRequest 实例,建立和发送请求,并响应服务器. 本

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

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