《计算机应用》月刊

中文核心期刊,科学文摘、文摘杂志、剑桥科学文摘、哥白尼索引...
所属分类:自动化/计算机技术 / IT/互联网/数码
 

相关服务

本刊更新通知服务(免费)

  • 希望本刊有任何更新(新闻,内容等)都能得到及时的通知吗?

投稿说明

我们联合292家刊社开通了在线投稿服务! 您可以搜索您要找的刊物并查询其[投稿]栏目。您也可以通过致电(010)84852199转3了解详情。

帮助

0

Ajax基本原理

所投刊社及刊社评论 | 作者个人资料 
投票 1条评论 收藏  推荐本文 博客引用
作者:刘士磊    所属分类: IT/互联网/数码
本文章所配附件:
Ajax基本原理.doc
摘要 本文介绍了Ajax的基本原理,交互过程和与之相关的技术及简单的实现方法,在此基础上给出了一个完整的实例,以使得能够对Ajax有一个更清楚的理解。
正文 字体大小:  
引言
计算机桌面应用使我们得以用以前不能想象的方式处理大量的复杂数据;基于计算机网络的C/S模式应用使得共享数据和资源成为现实。然而,正如C/S模式的应用是由于人们不满足单机的桌面应用一样,人们对C/S模式也心存抱怨了:C/S模式除了带给我们数据和资源共享的便利之外,也给我们带来了令我们(程序开发设计人员)和客户头疼的部署和发布问题。于是,B/S模式应用应运而生,而且得到了迅速的发展。B/S模式应用符合一定规范的浏览器作为通用客户端,从而解决了C/S模式中最令人头疼的部署和发布问题。但是,到此并没有结束,B/S虽然解决了应用的部署和发布问题,却因为种种限制,使得应用没有了以前丰富的交互,并且每次与服务器的交互都要完全刷新页面,这是非常糟糕和令人不快的。本文讨论了如何解决页面完全刷新和缺乏交互性的问题,我们用的方法就是――Ajax。
Ajax
那么,Ajax到底是什么呢?Ajax(Asynchronous JavaScript + XML),即异步JavaScript + XML的缩写,这只是最初的观点,最初由Jesse James Garrett创造出来的。但是,Ajax现在的覆盖面已经有了进一步的扩展,把允许浏览器与服务器通信而无需刷新当前页面的技术都涵盖在其中了。
坦率的讲,Ajax并不是什么新鲜玩艺。也就是说,Ajax并不是一种全新的技术,而更像一种技巧,是把过去的几种技术巧妙结合的技巧。真正与Ajax相关的新名词应该是XMLHttpRequest――一个最早在IE 5中出现,最近开始在多数浏览器得到支持的用来实现异步通信的对象。正如前面所说,B/S模式是利用浏览器作为其通用的客户端,所以要想异步通讯成为可能,必须要得到浏览器的支持。如果不是有了浏览器对XMLHttpRequest对象的广泛支持,我们可能不会看到Ajax的今天,更不会看到许多对Ajax的著名应用,如Google Map,Google Suggest,Ta-da List等。
Ajax的处理过程是怎样的呢?下图为Ajax应用的标准处理模式。

图 1 标准Ajax处理过程
从图中我们可以看出:由事件触发,创建一个XMLHttpRequest对象,把HTTP方法(Get/Post)和目标URL以及请求返回后的回调函数设置到XMLHttpRequest对象,通过XMLHttpRequest向服务器发送请求,请求发送后继续响应用户的界面交互,只有等到请求真正从服务器返回的时候才调用callback()函数,对响应数据进行处理。
在这个交互过程中,涉及到几种我们不得不提的技术:
1. XHTML和CSS――用来使表现标准化;
2.DOM――动态的修改文档的内容和结构;
3.XML――进行数据的交换和处理;
4.JavaScript――对上述几种技术进行绑定,使其成为协同工作的整体。
Ajax相关技术及基本原理
1. XMLHttpRequest简介
XMLHttpRequest,是我们得以实现异步通讯的根本。最早在IE 5 中以ActiveX组件实现;最近,Mozilla 1.0和Safari 1.2中实现为本地对象。XMLHttpRequest虽然不是W3C标准,但却得到了FireFox、Safari、Opera、Konqueror、IE等绝大多数浏览器的支持。这就使得Ajax有了今天如火如荼的发展。
用XMLHttpRequest进行异步通讯,首先必须用JavaScript创建一个XMLHttpRequest对象实例。创建XMLHttpRequest对象实例的代码清单如下所示:
var xmlHttp;
function createXMLHttpRequest(){
if(window.ActiveXObject){
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
xmlHttp = new XMLHttpRequest();
}
}
可以看出,创建XMLHttpRequest对象相当容易。首先,声明一个全局变量xmlHttp用来保存即将创建的XMLHttpRequest对象的引用;然后,在createXMLHttpRequest()方法中完成具体创建工作。因为IE与其他浏览器对XMLHttpRequest 对象的实现方法不同,因此在创建时,通过一个分支语句进行判断。如果window.ActiveXObject调用返回true,则证明为IE浏览器,那么就通过传递“Microsoft.XMLHTTP”给ActiveXObject()来创建XMLHttpRequest对象,否则就把XMLHttpRequest实现为本地JavaScript对象。XMLHttpRequest对象在不同浏览器上的实现是兼容的,所以可以用同样的方法访问XMLHttpRequest的方法和属性。

表 1 标准XMLHttpRequest方法
方 法 说 明
abort()
getAllResponseHeader()
getResponseHeader("Header")
open("method", "url")
send(content)
setRequestHeader("header", "value") 停止当前请求
把HTTP请求的所有响应头部作为键/值对返回
返回指定首部的串值
建立对服务器的调用
向服务器发送请求
把指定首部设置为所提供的值



表 2 标准XMLHttpRequest属性
属 性 说 明
onreadystatechange
readyState

responseText
responseXML
status
statusText 每个状态改变都会触发这个事件处理器
请求的状态:0-未初始化,1-正在加载,2-已加载,3-交互中,4-完成
服务器的响应,表示为一个文本字符串值
服务器的响应,表示为一个XML
服务器的HTTP状态码
HTTP状态码的相应文本
2. 利用XMLHttpRequest对象发送简单请求
创建了XMLHttpRequest对象,并了解了XMLHttpRequest对象的方法和属性之后,让我们来看看怎样利用XMLHttpRequest对象发送简单的请求。利用XMLHttpRequest对象发送简单请求的基本步骤如下:
1) 创建XMLHttpRequest对象实例。
2) 设定XMLHttpRequest对象的回调函数,利用onreadystatechange属性。
3) 设定请求属性:设定HTTP方法(GET或POST);设定目标URL。利用open()方法。
4) 将请求发送给服务器。利用send()方法。
3. 利用DOM对服务器响应进行处理
前面已经设置了回调函数,回调函数正是用来处理服务器响应信息的。但是,别忘了我们的最终目的:解决页面完全刷新和缺乏交互性的问题。在服务器对我们的请求信息作出响应后,我们就得实现页面的无缝更新(就是无闪烁的更新信息)。要实现这一点,那么就不得不提到DOM了。
DOM(Document Object Model),文档对象模型,是以面向对象方式描述页面文档的对象模型。DOM中定义了,与平台和语言无关的,用来表示和修改文档所需的对象、以及这些对象的属性和方法。通过DOM,我们可以把页面上的数据和结构抽象成一个树型表示,进而可以通过DOM中定义的属性和方法对文档进行操作,如遍历、编辑等。
这样,服务器相应信息就可以通过DOM的方法和属性,动态的更新到页面的相应节点。
从而使用户感觉不到刷新过程的存在,提高了交互性。
4. 一个完整的例子
在这里我们给出一个完整的利用Ajax的实例。实例包含两个文件:Request.htm和Response.xml。通过Request.htm向服务器发送请求,而Response.xml模仿了从服务器返回的响应。两个文件清单如下:



Ajax应用实例



Ajax应用实例



conclick="startRequest('all'); "/>

conclick="startRequest('north'); "/>








辽宁河北天津
山东江苏


浙江福建广东
广西海南上海
台湾香港澳门


小结
我们已经了解了Ajax的基本原理和相关的技术。其实,Ajax就是通过JavaScript创建XMLHttpRequest对象,再由JavaScript调用XMLHttpRequest对象的方法完成异步通信;然后,再由JavaScript通过DOM的属性和方法,完成页面的不完全刷新。

参考文献
1.Ryan Asleson , Nathaniel T.Schutta 著 金灵等译《Ajax基础教程 人民邮电出版社
2.张晓龙 基于Ajax的web应用 《电脑开发与应用》第19卷第8期 17~18页
3.史胜辉 Ajax技术在WEB客户端开发中的应用 《中国管理信息化》2006年6月第9卷第6期 88~90页



备注:
正文请看附件,谢谢。

   

 我来说两句
加载中...

IT/互联网/数码类精选文章

IT/互联网/数码类热门文章

IT/互联网/数码类热门评论