admin 管理员组文章数量: 1184232
2024年4月13日发(作者:patchwork怎么读)
第26卷第11期
2010年11月
赤峰学院学报(自然科学版)
Journal of Chifeng University(Natural Science Edition)
V01.26 No.11
NOV.2010
Ajax技术研究及其Web应用
张铃丽,朱永杰
(许昌学院,河南
摘
许昌461000)
要:ajax技术是多种现有技术的结合,通过浏览器与服务器之间的异步通信,实现了无刷新更新页面,提高了用户的
体验.介绍了ajax的技术原理、核心技术及工作流程,列举了ajax技术一些典型应用,并指出ajax的发展趋势.
关键词:ajax;XMLHttpRequest;JavaScript;DOM;XML
中图分类号:TP393 文献标识码:A 文章编号:1673—260X(2010)1 1-0020—03
随着Web应用技术的不断发展,用户已经不满足于像
浏览器端 服 筹器竭
以前那样填写表单,点击“提交”按钮,然后等待页面跳转的
HTM f.‘ ’I
用 CSS 数据 I
同步请求/响应模式,用户需要的是一种像任何桌面应『}j程
户 Al
I
Web
数据 I
序那样流畅、快捷和人性化的Web体验.另外,大多数的网
界 引
ax
I 服
●—一 存储 I
与后 I
整 I 务
_- 台处 I
页具有一些相同的内容,l尤其是同一网站中的网页.以往打
面 JavaScript HTTP I 器 理 I
开这些网页的时都是从服务器上全部下载到客户端,这造
调用 请求 I I
成了巨大的服务器的负担,其实可以采用新的技术来避免
图2 Ajax Web模型
重复内容的请求.因而,Ajax技术应运而生并获得广泛应用。
行交互_引.Ajax引擎是用JavaScript语言所编写,且通常放在
Ajax是Asynchronous javaScript and XML的缩写,是
一
个隐藏frame中,该引擎负责绘制用户界面以及与服务器
由XMLHttpRequest、CSS、XML、DOM和JavaSeript等技术结
端通信目.并不是所有的用户请求都提交给服务器,像一些数
合而成的技术Ⅲ.它是基于JavaScrip!脚本和XML封装数据
据验证和数据处理等都交给Ajax弓l擎来做,只有确定需要
的服务器和客户端的异步交互技术,能够实现浏览器与服
从服务器读取新数据时再由Ajax引擎向服务器提交请求,
务器的异步通信,使B/S结构的应用程序根据用户输入实
这样,把以前的一些服务器负担的工作转嫁到客户端,利用
现页面实时、局部、快速刷新,模拟类桌面应用程序的效果,
客户端闲置的处理能力来处理,减轻服务器和带宽的负担.
从而不仅节省了带宽,而且显著地提高用户的体验.
通过Ajax的技术原理可知,Ajax的最大特点是无刷新
1 Alax的技术原理
更新页面,减少用户心理和实际的等待时间;Ajax能够按需
传统的Web应用采用同步交互方式,用户发送一个 读取数据,避免了在网络上发送那些不发生改变的信息.但
H33"P请求到服务器,服务器对其进行处理后再返回一个新
Ajax并不是完美的技术,它也有自身的缺陷.浏览器兼容性
的Web页面到浏览器 当服务器正在处理的时候,用户则一 差;前进后退按钮失效;一些手持设备现在还不能很好的支
直处于等待状态,这样,不会产生较好的体验,而且完整页
持Ajax;运行效率不高;开发难度加大;对搜索引擎不太友
面的传输会加重网络负荷和服务器的工作量.
好.
Ajax是多种技术的结合,通过协作发挥各自的作用:使
2 Aia×的核心技术
用XHTML和CSS标准化呈现;使用DOM实现动态显示和
aj 的核心技术是XMIMttpRequest、JavaScript、CSS、
交互;使用XML和XSTL进行数据交换与处理;使用XML—
DOM和XM L_
Htlp—Request对象进行异步数据读取;使用JavaScript绑定
xMLHttpRequest是Ajax中最为核心的技术,是xM
和处理所有数据[1】.
Hitp组件的一个对象,最早是由微软1995在IE5.0浏览器
中率先推出的f4].它直接把数据传到服务器上或者从服务器
………■
浏 用
HTML+CSS数据 数据 服
上读取数据,实现上述所介绍无刷新更新页面的功能.与此
Web
览 户
..
服 1于I晤 务
对应,opera、Mozilla和safari等浏览器也实现了类似的对象,
器 接
务 与后 器
XMLH1IpRequest是目前该技术的正式名称.XMLHttpRequest
端 口
台处 端
HTTPi ̄求
器
I
理
技术的出现打破了长久以来的Web应用开发模式,这样既
减轻了服务器的负担又加快了响应速度、缩短了用户等待
1传统的Web模型
时间,提升了用户的体验.
aj 采用异步交互方式,在用户和服务器之间引入一
JavaSeript是一种基于对象和事件驱动并具有较高安全
个用JavaScript编写的Aj 引擎,崩来代替用户与服务器进
性能的脚本语言,拥有自己的编程标准,可以使用浏览器中
20一
的很多对象,包括XMLHttpRequest.在ajax中,JavaScript通
3 Max的工作流程
过调用XMLHttpRequest对象的方法和属性与服务器端进
行数据交互,同时还可以利用DOM的API来解析从服务器
端返回的XML数据和更新HTML页面的内容.由于
JavaScript可以直接在客户端进行一些事件的处理,充分发
挥了客户端的运算能力,所以就不需要将用户所提交的简
单请求传到服务器处理再传回来,从而大大减轻了服务器
的负担.JavaScfipt在客户端的浏览器执行,JavaScript代码不
A 实现异步请求/响应模式步骤如下:
3.1创建XMLHttpRequest对象
在使用XMLHttpRequest对象发送请求和处理响应之
前,必须先创建一个XMLHttpRequest对象.代码如下:
if(window.ActiveXObject){
XMLHttpRequest=new ActiveXObject
XMLHTrP”);
l
Microsoft.
应太多,否则会使得客户端运行很慢,JavaScript应用最多的
就是表单验证同.
DOM是Document Object Model的缩写,即文档对象模
else if(window.XMLHttpRequest){
XMLHttpRequest=new XMLHttp—Request0;
型,为文档提供了结构化表示,并定义了如何通过脚本来访
问文档结构.它是个W3C规范,独立于平台和语言.DOM定
义了如何表示和修改文档所需要的对象,也定义了这些对
象的行为和属性,以及对象之间的关系.使用JavaScript可以
访问文档中的所有结点,即所有对象.通过改变这些对象的
属性,用户可以控制页面的局部行为,将动态获取的数据插
入到文档中,实现局部刷新的目的.用户还可以利用DOM模
型增加和删除文档结点,实现界面元素的动态变化.在应用
jaax技术时,可以通过DOM来解析处理XML文档和更新
HTML页面的内容.
XML是Extensible Markup Language的缩写,即可扩展
标记语言,可以规范地定义结构化数据,是网上传输的数据
和文档符合统一标准[6].它与HTML的性质完全相同,更准
确的说,XML正是从HTML转化而来,目前,已经成为In—
temet上数据和文档传输的标准.XML作用很大而且广为接
受,它为跨平台、跨领域的应用提供了一种通信手段.在应用
Ajxa技术时,XMLHttpRequest对象可以选择使用XML作为
与服务器端通信的数据格式.
CSS是Web设计沿用已久的部分,同样,在ajax中,
CSS担当着界面表现的重任,其重要性甚至超过了传统的
Web程序设计.JavaScript通过XMLHttpRequest对象和服务
器进行交互,通常获取的都是单纯的数据,不包括表现元
素,如果此时使用JavaScript操作标记的属性来控制其外
观,会使代码更加复杂且难以维护,使用CSS则能很好的解
决这些问题.样式表可以定义一些明显的样式元素,例如颜
色、边框、背景图片、透明度和大小等.此外,CSS还可以定义
元素相互之间的布局及简单的交互功能.图3显示了Ajax
技术的核心技术如何配合工作来完成客户端与服务器的异
步操作.
图3 ajax的五个主要组件
)
由于XMLHttpRequest不是一个W3C标准,Intemet
Explorer把XMLHttpRequest实现为一个ActiveX对象,其他
浏览器(如Firefox、Safari和Opera)把它实现为一个本地
JavaScript对象.由于存在这些差别,JavaScript代码中必须包
含有关的逻辑,从而使用ActiveX技术或者使用本地
JavaSeript对象技术来创建XMLHttpRequest对象,以确保和
浏览器兼容.
3.2发出HTrP请求和回调函数
创建了XMLHttpRequest对象之后,就可以使用xML-
HttpRequest对象中的open0方法和send0方法来向服务器
发送请求,如下所示:
XMLHttpRequest:open(strMethod,strUd,boolAsync,si ̄User,
strPassword);
XMLHttpRequest.send(varBody);
openO方法的strMethod参数,字符串型,表示HrrI’P请
求的方法,可以为POST、GET、PUT、HEAD、DELETE等;
strUrl,字符串型,表示请求的URL地址,可以为绝对地址,
也可以为相对地址;boolAsync,布尔型,指定此请求是否为
异步方式,默认为true,如果为false,表示此次请求为同步请
求模式;strUser和strPassword,字符串型,可选参数.
open调用完毕后要调用send方法,send的参数va卜
Body,表示通过请求发送的数据,variant型,可以是字符串,
DOM树,或其它数据流.当使用GET方法提交请求,或者没
有需要发送的数据时,可以send(null1)或直接省略参数send
O.
在发送请求后,还要指定回调函数.创建XMLHttpRe—
quest对象向服务器发送一个Ⅲ rP请求后,要决定当收到
服务器的响应后,需要做什么.这需要告诉XMLHttpRequest
对象用哪一个函数来处理这个响应.通常把该处理函数叫做
回调函数.xMLHttpRequest对象提供了onready— state—
change属性来指定回调函数,例如:
XMLHttpRequest.onreadystatechange=CaU—BackFunction—
Name;
也可以用JavaScript即时定义函数的方式定义响应函
数,例如:
XMLHttpRequest.onreadystatechange=funct—ion0(J;
3.3处理服务器返回的信息
当XMLHttpRequest对象的readyState发生变化时将触
一
21—
发readystatechange事件.通过将处理函数赋给XMLHttpRe—
quest对象的onready—statechange属性,可以为该事件指定
事件处理函数.如果readyState值是4,代表服务器已经返回
所有的信息,可以开始处理信息并更新页面内容.服务器返
回信息后,通过访问XMLHttp—Request对象的stalus属性来
获取当前HTrP请求的状态,以此来判断请求是否成功.其
中,200代表页面正常.
在XMLHttpRequest对象完成一次HTI'P请求后,可以
通过访问其responseText或response—XML属性来获取返回
的数据.
responseText将返回的数据作为字符串格式返回,re—
sponseXML将返回的数据格式化为XML文档返回.
以XML文档方式返回的数据,需要使用DOM来解析,
从中提取响应数据,DOM也提供了对页面中各个对象的读
写支持,通过DOM可以方便地完成对页面内容的更新.
3l4取消当前请求
如果需取消一个正在进行中的请求,可以调用xML_
HttpRequest对象的abort方法,如下所示:
XMLHttpRequest.abortO;
调用后该方法后,XMLH.pRequest对象重新回到未初
始化状态.
4 Ajax技术的应用
AJAx的技术特点在于异步交互、动态更新Web页面,
因此它的适用范围是交互较多、频繁读取数据的Web应用.
Ajxa主要可以用于数据验证、级联菜单和自动更新页面等.
在填写表单时,有些数据需要保证唯一性,如在用户注
册的过程中,需要检验待注册的用户名是否唯一.传统的方
法是采用window.open的弹出窗口或window.showModalDia-
log的对话框,两者都需要打开窗口.而Aj/Ix采用异步方式
直接将参数提交至服务器,用window.alert将服务器返回的
校验信息显示出来,这样可以快速完成验证又不加重服务
器的负担.
以往在网页中应用级联菜单时,一次性地将级联菜单
的所有数据全部读出并写入数组,然后根据用户的操作用
JavaSeript来控制它的子集项目的呈现.这种方法避免了页
面的刷新,但由于用户对于菜单项的单击是不均匀的,在菜
单结构复杂数据量大的时候会产生相当大的冗余,造成资
一
22
源的浪费.应用Ajax技术之后,在初始化页面时只读出它的
第一级的所有数据并显示,在用户操作一级菜单中的某一
项时,会通过Ajax向后台请求该菜单项所属的二级子菜单
的所有数据,以此类推……这样,减少了数据下载总量,在
真正意义上实现“按需取数据”局部更新页面.
在有些Web应用中数据更新速度很快,如聊天室的聊
天记录等等.在AJax出现之前,用户想看到最新消息必须手
动刷新或者利用页面提供的定时刷新功能.而Ajax在页面
加载后会通过引擎轮询服务器,查看是否有需要更新的内
容.若有,只需将新数据下载,在页面上进行动态更新并给出
提示.这样既避免用户手工刷新页面的不便,也不会因频繁
刷新而造成资源浪费.
然而Ajax不是万能的,只有在适宜的场合才能充分发
挥长处,改善系统性能和用户体验.
5结语
Ajxa技术是多种技术的结合,实现了无刷新更新页面;
它将原来一些服务器端的工作利用客户端闲置的能力来处
理,从而减轻服务器的负担,减少用户的等待时间,提升了
用户体验.通过运用Ajax技术,可以构建更为动态和响应更
灵敏的Web引用程序,用户体验逐步接近桌面应用.随着
jAax技术的成熟和各种浏览器的支持,Ajax技术将会得到
更加广泛的应用.
参考文献:
[1]Asleson R.Ajax基础教程【M】.北京:人民邮电出版社,
2006.
[2]游丽贞.AjaX引擎的原理与应用Ⅱ】.微计算机信息,2006,22
f2):506—206.
[3]谭力,杨宗源,谢瑾奎.Ajax技术的数据响应优化卟计算
机工程,2010,36(7):52—54.
[4]王净,占凯.Ajax技术和web应用U】.舰船电子工程,2009,
29(11):127—131.
[5]奈名高,王程根,邓浩,李纬.基于web2.0的Ajax技术的
开发Ⅱ】计算机技术与发展,2007,17(5):203—206.
[6]昊吉义,平玲娣.Web2.0主流应用技术——Ajax性能分
析Ⅱ】.计算机工程与设计,2008,29(8):1913—1914,1945.
版权声明:本文标题:Ajax技术研究及其Web应用 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1712970068a614890.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论