AJax技术

Ajax技术及其实践应用

字号+ 作者:H5之家 来源:H5之家 2016-01-18 17:01 我要评论( )

(内蒙古电子信息职业技术学院,内蒙古,呼和浩特 010010) 摘 要:在对比传统Web应用与Ajax Web应用的基础上, 对Ajax技术进行了阐述,包括其工作原理、所涉及到的主要技术及其特点, 并详细介绍了A jax技术在实践应用中的使用流程。 关键词:Ajax技术;

(内蒙古电子信息职业技术学院,内蒙古,呼和浩特 010010)
摘 要:在对比传统Web应用与Ajax Web应用的基础上, 对Ajax技术进行了阐述,包括其工作原理、所涉及到的主要技术及其特点, 并详细介绍了A jax技术在实践应用中的使用流程。
关键词:Ajax技术;工作原理;异步交互
中图分类号:TP393.4  文献标识码:A  文章编号:1007—6921(2010)04—0114—02
1 Ajax技术简介

随着Internet的飞速发展和Web技术的不断创新,Web应用程序越来越多的强调用户体验 的完美性。在这种发展趋势下,Web应用服务正在发生着巨大的变化, 传统的Web应用已经越 来越难满足用户的需求。传统的Web应用采用同步交互过程进行工作:允许用户填写表单(For m),当提交表单时就向Web服务器发送一个请求,服务器接收并处理传来的请求,然后返回 一个新的网页。这种典型的传统Web应用程序模型如图1所示。

可见,在这种传统的Web应用程序模型中,由于存在完全刷新限制,浪费时间和带宽,增 加服务器的负荷,而且由于应用的响应时间依赖于服务器的响应时间,系统反应不够灵敏, 这导致了用户界面的响应比本地应用慢得多,使得Web体验变得异常缓慢和沉闷。

Ajax(Asynchronous javascript and XML)技术的出现弥补了传统Web应用的这种缺憾 。Ajax是一种创建交互式网页应用的网页开发技术,可以创建丰富的基于浏览器的应用,能 够在所有当前流行的Web浏览器上部署,而无需非凡的插件。Ajax应用允许局部刷新页面,W eb应用开发人员可以自由地与服务器异步交互,仅向服务器发送并取回必需的数据。在这种 模式下,服务器将原来直接发送到用户表现层的数据,改为向Ajax引擎返回其可用数据,并 由Ajax引擎理解和解析这些数据,如图2所示。

当Ajax引擎收到这些服务器的响应后,将会触发一些操作,即完成数据的解析工作及由 于其所提供的数据对用户的界面进行必要的修改。由于在这个过程中传送的信息比传统模式 下要少许多,因此用户界面的更新速度明显加快,改善用户的体验。在实际的Web应用系统 中,Ajax技术通常用于关键字提示、输入内容提示、表单驱动的交互、深层次树的导航、快 速的用户与用户间的交流响应等情况。
2 Ajax的工作原理

从本质上说,Ajax并不是一门新语言,也不是一种新技术,它实际上是几项技术按一定的 方式组合在一个的协作环境中共同发挥作用,为用户提供无刷新的动态数据交换等功能。Aj ax涵盖:①运用XHTML和CSS实现基于各种标准的呈现;②运用DOM (文档对象模型)实现动态 显示与交互;③运用XML和XSLT进行数据交换与传递;④运用XMLHttpRequest实现异步数据 读取;⑤运用javascript整合上述技术。Ajax通过调用XMLHttpRequest实现与服务器的异步 通讯,并使用对应平台的XMLDOM对返回的XML进行处理,然后再通过DOM对页面中的HTML元素的 操作,实现丰富友好的界面和交互。通俗地说, Ajax是一种从服务器获取数据,并在后端处理 数据、执行代码, Web站点可以迅速向用户提供最新信息的技术。同时,用户在Web上的操作 就如同利用本机桌面应用程序一样方便。

Ajax的工作原理相当于在客户端和服务器之间加了一个中间层,使用户操作与服务器响 应异步化。并不是所有的用户请求都提交给服务器,像一些数据验证和数据处理等都交给Aja x引擎自己来做,只有确定需要从服务器读取新数据时再由Ajax引擎代为向服务器提交请求。 其原理如图3所示。

3 Ajax的技术特点

应用Ajax的Web应用程序,可以极大的改善用户体验。Ajax主要有以下技术特点:
3.1 提供更好的用户体验

Ajax可以异步更新页面,允许用户在处理一个请求的同时处理 其他的请求,使得在Web上运行软件的感受,越来越接近于本地PC机上的运行水平。
3.2 提供更快的响应速度

Ajax的策略是“无刷新更新页面”和“按需获取数据”,Ajax 的本质是将以前需要在服务器端做的大量工作由客户端通过javascript和DOM操作完成,这 样可以降低网络流量,最大限度的减少冗余的请求和响应对服务器造成的负担,在一定程度 上提高Web应用的响应速度。
3.3 基于标准化的并被广泛支持的技术

Ajax采用的都是现有相对成熟的技术, 可以快捷地将Ajax的设计模式应用到已有的实际项目当中,而不需要改变现有Web内容。
3.4 数据聚合

Ajax可以调用外部数据,在取得足够的权限后,能轻易的实现聚合。
3.5 数据与呈现分离

在WEB中,使界面与应用分离,便于维护与扩展。
3.6 跨平台

Ajax是基于网页的,它可以在任何操作系统上运行,方便用户使用和管理。
4 Ajax的实践应用

Ajax是通过javascript调用Ajax引擎来代替产生的一个HTTP的用户动作,实现与服务器 的异步通讯。Ajax技术在实践应用中的使用流程如下:
4.1 创建XMLHttpRequest类

XMLHttpRequest类首先由Internet Explorer以ActiveX对象引入,被称为XMLHTTP。后 来Mozilla、Netscape、Safari等其他浏览器也提供了XMLHttpRequest类,不过它们创建XML HttpRequest类的方法有所不同。

对于Internet Explorer浏览器,由于在不同的Internet Explorer浏览器中XMLHTTP版 本不一致,为了更好的兼容不同版本的Internet Explorer浏览器,需要根据不同版本的Int ernet Explorer浏览器来创建

XMLHttpRequest类,方法如下: 

xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP.3.0”); //3.0或4.0, 5.0  

xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP”); 

xmlhttp_request = new ActiveXObject(“Microsoft.XMLHTTP”);

对于Mozilla、Netscape、Safari等浏览器,创建XMLHttpRequest类的方法如下:

xmlhttp_request = new XMLHttpRequest();

注意:如果服务器的响应没有XML mime-type header,某些Mozilla浏览器可能无法正 常工作。为了解决这个问题,如果服务器响应的header不是text/xml,需要修改该header。 

xmlhttp_request = new XMLHttpRequest(); 

xmlhttp_request.overrideMimeType('text/xml');

在实际应用中,为了兼容多种不同版本的浏览器,一般将创建XMLHttpRequest类的方法 写成如下形式:

try{

if(window.ActiveXObject){

for(var i=5;i;i--){

try{

if(i==2){

xmlhttp_request = new ActiveXObject(“Microsoft.XMLHTTP”);}

else{

xmlhttp_request = new ActiveXObject(“Msxml2.XMLHTTP.”+i+“.0”);

xmlhttp_request.setRequestHeader(“Content-Type”,“text/xml”);

xmlhttp_request.setRequestHeader(“Charset”,“gb2312”);}

break;}

catch(e){

xmlhttp_request=false;}}}

else if(window.XMLHttpRequest)

{xmlhttp_request = new XMLHttpRequest();

if(xmlhttp_request.overrideMimeType)

{xmlhttp_request.overrideMimeType(`text/xml');}}}

catch(e){xmlhttp_request=false;}
4.2 编写响应函数

当收到服务器的响应后,需要告诉HTTP请求对象用哪一个javascript响应函数处理这个 响应。可以将对象的onreadystatechange属性设置为要使用的javascript的函数名,如下所 示:

xmlhttp_request.onreadystatechange=FunctionName;

注意:FunctionName是用javascript创建的函数名,不要写成FunctionName()。也可以 直接将javascript代码创建在onreadystatechange之后,例如:

xmlhttp_request.onreadystatechange=function(){//javascript代码段};
4.3 发送请求

在定义了如何处理响应后,就可以发送请求了。采取调用HTTP请求类的open()和send() 方法,如下所示:

xmlhttp_request.open('GET', URL, true);

xmlhttp_request.send(null);

open()的第一个参数是HTTP请求方式,可以是GET,POST或任何服务器所支持的调用方 式,按照HTTP规范,该参数要大写;第二个参数是请求页面的URL;第三个参数设置请求是 否为异步模式,如果是True,javascript函数将继续执行,而不等待服务器响应。
4.4 处理响应

只有收到一个完整的服务器响应后,函数才可以处理该响应。XMLHttpRequest提供了re adyState属性来对服务器响应进行判断。readyState的取值见表1。

由表1可以看出,只有当readyState=4时,函数才可以处理该响应。代码 如下:

if(http_request.readyState == 4){//收到完整的服务器响应}

else{//没有收到完整的服务器响应}

服务器响应收到以后,接着函数会检查HTTP服务器响应的状态值。完整的状态取值可参 见W3C文档。当HTTP服务器响应的值为200时,表示状态正常。在检查完请求的状态值和响应 的HTTP状态值后,就可以处理从服务器得到的数据了,有两种方式可以得到这些数据:以文 本字符串的方式和以XMLDocument对象方式。
5 结束语

Ajax技术在互联网服务器和个人电脑之间充当缓冲器,巧妙地令服务非常顺畅,并能提升 系统运行功效,在Web开发中大行其道。Ajax虽然还没有大规模的投入应用,但它所用到的软 件技术都很成熟,并且Web站点(如Google、Yahoo等)正在证明其有效性和稳定性。微软在Vis ual Studio 2005中提供了Ajax控件,使Ajax的使用更加简单方便。相信在不久的将来, Aja x将会使我们的应用程序更加自然和响应灵敏,从而更加提升用户的浏览体验。
[参考文献]
[1] 李刚基于J2EE的Ajax宝典[M]北京:电子工业出版社,2007. 
[2] 史胜辉Ajax技术在WEB客户端开发中的应用[J]南通大学学报,2006,(9 ).
[3] 徐蕊,王戈AJAX技术及其WEB应用[J]甘肃科技,2007,(4).
[4] 武嘉捷AJAX技术在WEB开发中的应用[J]科学之友,2008,(5).
[5] 刘传文Ajax技术在J2EE框架中的应用[J]重庆工商大学学报(自然科学 版),2008,(8).

 

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

相关文章
  • JQuery实现Ajax加载图片的方法

    JQuery实现Ajax加载图片的方法

    2016-02-24 17:01

  • 判断用户是不是为ajax请求

    判断用户是不是为ajax请求

    2016-02-24 17:00

  • Ajax与WEB开发 by alixixi.com

    Ajax与WEB开发 by alixixi.com

    2016-02-11 11:02

  • jQuery.ajax()的相关参数及使用

    jQuery.ajax()的相关参数及使用

    2016-02-08 16:00

网友点评