Ajax技术及其应用研究

来源 :计算机时代 | 被引量 : 0次 | 上传用户:lu_bo_123
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:Web应用所提供的体验和用户从桌面应用程序所得到的体验在响应速度、易用性等方面存在着巨大的差距,为了改善Web应用程序给用户带来的体验,IT界引出了Ajax这个新名词。文章简要介绍了Web 2.0的Ajax技术的基础理论,就其关键技术中的XMLHttpRequest对象作了重点分析,并对Ajax技术的优缺点及其应用作了探讨,展示了Ajax所以能给用户带来更为强大的Web体验的实质。
  关键词:Ajax;XMLHttpRequest;无刷新;异步
  
  0引言
  
  桌面应用程序有着丰富的界面以及对于Web程序来说无法比拟的响应能力,Web应用所提供的体验和用户从桌面应用程序所得到的体验在响应速度、易用性等方面存在着巨大的差距。
  Jesse James Garrett的一篇A New Approach to WebApplications引出了Ajax这个Web世界的新名词。Ajax是在成熟的互联网技术下诞生的一个新标准,是Web 2.0中的一项重要技术,旨在给用户带来更为强大的Web体验。随着Gmail、Google Maps、Google Suggest、Flickr、Netflix和A9等Ajax应用的不断涌现,Ajax越发地受到了人们的关注。
  
  1 Aiax的概念
  
  Ajax是Asynchronous JavaScript and XML的缩写,意思是异步的JavaScript与XML。Ajax使用了若干项技术来构建丰富的基于Web的应用,使得在线的Web应用与桌面程序有同样的观感,这些技术包括CSS、JavaScript、XHTML、XML、XMLHttpRequest、DOM以及XSLT等Ⅲ。
  要准确描述什么是Ajax,最容易的方法是让其与相反的情况进行对比。
  对于大部分的Web站点,与Web服务器进行交互的通信方式是:当在线用户填写完表单单击提交按钮后,整个页面就会发送至Web服务器,用户必须等待服务器接受请求。当服务器完成处理请求时,就会将响应内容发送过来,这时,才得以最终刷新用户页面。Ajax是一种减少这一系列等待事件的技术。
  
  2 Ajax的思想
  
  Ajax实际上是几项技术的综合,每个都基于本身的能力而有所发展,组合在一起形成了一个更强的新技术。Ajax组合了以下七种技术:
  (1)使用XHTML和CSS标准化呈现;
  (2)使用DOM来动态显示和进行交互;
  (3)使用XML和XSLT来进行数据交换和显示;
  (4)使用XMLHttpRequest来获取异步信息;
  (5)使用JavaScript将上述六项技术整合起来。
  虽然Jesse列出了上面七项AjaX的构成技术,但通常认为,所谓的Ajax其核心只有XMLHttpRequest,JavaScript和DOM,倘若所用数据格式为XML的话,还可以再加上XML这一项。
  然而,Ajax最核心的理念是,在传统应用中的浏览器直接和服务器交互的模式的中间夹了一层Script。也就是说,原来是Browser-Server架构,现在是Browser-Scripc-Server,如图l所示。
  对于纯粹的Ajax应用,浏览器只向JavaScript发送消息,JavaScript使用XmlHttp向服务器发送请求,然后服务器在XmlHttp的回复中带上相关消息,最后JavaScript分析这些消息,用HTML DOM模型处理界面。如此,理论上可以完全消除刷新的需要。
  
  3 Ajax的核心技术
  
  Ajax的最大特点是无刷新更新页面,这一特点主要得益于XMLHTTP组件的XMLHttpRequest对象。
  在使用XMLHttpRequest对象发送请求和处理响应之前,必须先使用JavaScript创建一个XMLHttpRequest对象。代码清单l给出了编写跨浏览器的JavaScript代码来创建XMLHttpRequest对象的示例。
  


  代码清单l:创建XMLHttpRequest对象。var xmlHttp;function createXMLHttpRequest(){if(window.ActiveXObject)//判断浏览器是否为IE浏览器{xmlHttp=new ActiveXObject(”Microsoft.XMLHTTP",);}
  else if(window.XMLHttpRequest)//Mozilla,Safari,.…
  {xmlHttp=new XMLHRpRequest():}
  }
  不同于标准的Web程序中所用的请求/响应方法,Ajax应用XMLHttpRequest对象的过程如下:
  (1)一个客户端事件触发一个Ajax事件。其代码如下:  onblur=“validateEmail”>
  (2)创建XMLHttpRequest对象,使用open方法建立调用,并设置URL以及所希望的HTrP方法(通常是GET或POST),请求通过一个send方法调用触发。代码如下所示(有关的方法见表1):
  function validateEmail0{
  var email=document.getElementByld(“email"):
  var urf=“validate?email=”+escape(email.value);
  createXMLHttpRequest0;//见代码清单1
  xmlHttp.open("GET",URL);
  xmlHttp.onreadystatechange=callback;
  xmlHttp.send(null);
  }
  (3)向服务器发出请求。可以调用Servlet、CGI脚本或者任何服务器端技术。
  (4)服务器处理有关请求,包括访问数据库,甚至访问另一个系统。
  (5)响应返回到浏览器。Content-Type设置为text/xml-——XMLHttpRequest对象只能处理text/xml类型的数据。要使浏览器不在本地缓存结果,可以使用下面的代码:
  Response.setHeader("Cache-Contml","no-cache");
  Response.setHeader("Pragma","no-cache");
  (6)在前述代码中,XMLHttpRequest对象配置为处理返回时要调用callback函数。这个函数会检查XMLHttpRequest对象的readyState属性,然后查看服务器返回的状态码(有关XMLHttpRequest的状态码如表2所示)。如果一切正常,callback 函数就会在客户端上进行相关处理工作。
  以下就是一个典型的回调方法:function callback(){
  If(xmlHttp.readyState==4)
  {If(xmIHttp.status==200)
  {//do something interesting here)
  }
  }
  XMLHttpRequest对象与服务器之间相互通信的方法有多种。XMLHttpRequest对象可以使用HTTP GET、POST或者HEAD方法发送请求,请求数据可以作为查询串、XML或JSON数据发送。处理请求之后,服务器一般会发送简单文本、XML数据甚至JSON数据作为响应。
  
  4 Ajax的优点及其应用
  
  Ajax的出现有代替传统Web开发中采用Form(表单)递交方式更新Web页面的趋势,可以算是一个里程碑。虽然Ajax并不是适用于所有场合,这是由它的特性所决定的,但恰当地使用Ajax可以带来更好的用户体验。
  使用Ajax的优点包括:减轻服务器的负担;无刷新更新页面,减少用户实际和心理等待时间;可以把以前的一些服务器负担的工作转嫁到客户端;使Web中的数据与呈现分离等等。
  


  下面的例子是一个关于级联菜单方面的Ajax应用。
  对级联菜单的传统处理是:
  为了避免每次对菜单的操作都要重载页面,一次性将级联菜单的所有数据全部读取出来并写入数组,然后根据用户的操作用JavaScnpt来控制它的子集项目的呈现。这虽然解决了操作响应速度慢、重载页面以及向服务器频繁发送请求的问题,但是如果用户不对菜单进行操作或只对菜单中的一部分进行操作的话,那么读取的数据中的一部分就会成为冗余数据源,特别是在菜单结构复杂、数据量大的情况下(比如菜单有很多级、每一级菜单又有上百个项目),这种弊端就更为突出。
  在此案例中应用Ajax后,情况将不同:
  在初始化页面时只读出它的第一级的所有数据并显示,在用户操作一级菜单的其中一项时,会通过Ajax向后台请求当前一级项目所属的二级子菜单的所有数据,如果再继续请求已经呈现的二级菜单中的一项时,再向后面请求所操作二级菜单项对应的所有三级菜单的所有数据,依此类推……,这样,用什么就取什么、用多少取多少,就不会有数据的冗余和浪费,减少了数据下载总量,而且更新页面时不用重载全部内容,只更新需要更新的那部分即可,相对于后台处理并重载的方式缩短了用户的等待时间,也把对资源的浪费降到最低。
  此外,Ajax可以调用外部数据,可以实现数据聚合的功能(当然要有相应授权),比如微软的在线RSS阅读器;还可以利用一些开放的数据,开发自己的一些应用程序,比如用Amazon的数据作一些新颖的图书搜索应用。
  可见,Ajax适用于交互较多,频繁读数据,数据分类良好的Web应用。
  
  5结束语
  
  Ajax的成功之处在于使用验证过的现有技术使得Web应用更像是一个桌面应用程序,减少了用户的等待时间,提升了用户的浏览体验。Ajax在任何标准浏览器(可以处理JavaScfipt和DOM的浏览器)中都可以正常工作,不需要单独安装其他插件。
  (注:本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文。)
其他文献
摘要:SIP协议是应用层会话控制协议,具有简单、可扩展和分布式的特点。LDAP目录作为一种非关系型数据库,可以简化查询的步骤,PAM就是在应用程序和下层的认证模块之间加入一个抽象层,使得上层应用和底层认证相互独立。文章提出了通过LDAP目录与PAM结合来实现SIP服务器的认证方案,并利用pam_ldap模块实现了SIP服务器的LDAP认证。  关键词:SIP;PAM;LINUX;LDAP    0
期刊
摘要:介绍了基于Vega平台的虚拟现实系统;GL Studio平台的工作流程;针对GL Studio制作的仪表仿真模型不能在Vega场景中直接应用的问题,分析了Vega和GL Studio的底层软件开发原理;对GL Studio模型向Vega场景移植的几项关键技术进行了研究,解决了坐标系差异、坐标系基本单位转换、模型载入以及场景中的模型操作等问题。  关键词:Vega;GL Studio;视景仿真
期刊
摘要:采用基于增量复制来解决分布式系统的数据同步是一个简单易实现的方法。文章利用Oracle的高级复制技术实现了分布式数据库系统间的数据同步,并给出了PL/SQL命令方式的实现过程。  关键词:复制;分布式;数据库;同步;应用    0引言    基于WAN的分布式管理信息系统是当前跨多地域企事业单位信息处理的首选。福建省运政管理信息系统是覆盖全省14个市运管处、84个县运管所的WAN分布式网络管
期刊
摘要:密写(Steganography)是信息隐藏(Information Hiding)的一个重要分支。鉴于密写比信息加密更安全以及网络与信息安全问题变得越来越重要,密写已经成为当前国际上的研究热点。JPEG是一种常见的图像格式,在JPEG图像中进行密写有着重要的实际意义。文章主要研究了以JPEG图像为载体进行数据密写的基本模型,以及目前国内外以JPEG图像为载体的密写算法。  关键词:信息隐藏
期刊
摘要:数据分页是基于数据库的动态Web系统所必需的技术。Microsoft公司的ADO(Active Data objecc)数据存取技术提供了一种基于Recordset的数据分页方法,该方法简单易用,却由于效率原因,不适用大数据量的快速定位分页。文章对该方法从根本上进行了改进,获得了非常明显的效果,完全适用于企业级应用的海量数据分页定位。  关键词:Web分页技术;ADO;Recordset;改
期刊
摘要:首先介绍了RDF查询语言需要满足的一般特性需求,即表达能力、模式感知、程序操纵、合成性和语义功能。然后介绍了七种具有代表性的RDF查询语言(RQL、RDQL、TRIPLE、N3、Versa、SeRQL、SPARQL),以及国外对RDF查询语言在支持图形匹配、关系操作、聚合和分组功能、递归、具体化、容器、命名空间、语言标签、字符和数据类型、继承等方面的比较研究。  关键词:RDF;语义网;查询
期刊
摘 要:把EP9312与其它嵌入式处理器进行了比较,阐述了采用EP9312来构造嵌入式系统的理由。根据EP9312的特点和系统需·求,提出了一种基于EP9312处理器的嵌入式系统的硬件设计方案。介绍了系统的技术指标及其所使用的Super I/O、PHY,接口电平转换芯片、FLASH、SDRAM、bootloader等各组成部分。叙述了提高系统稳定性的一些原则。该系统主要应用于高端打印机、计算机终
期刊
摘要:利用Intel Mobile PlatForm SDK中关于电源管理的开发接口,提出了电源管理的技术方案,解决了教师上课过程中电脑黑屏和屏幕保护程序自动运行的问题,并为相关工程技术人员给出了一个实例作参考。  关键词:黑屏;屏幕保护;电源管理;开发接口    0引言    在多媒体为主的课堂演示教学过程中,经常会碰到这样的问题,老师正在专心讲课,突然屏幕出现黑屏或者进入屏幕保护状态,导致上课
期刊
摘要:在使用安全、方便的c++的I/O流操作中,某些细节的处理往往被忽视,这会给看似简单的程序带来料想不到的影响。文章结合作者多年c语言及c++语言的教学经验,针对I/O流在教学过程中遇到的问题,对缓冲式输入、输出操作进行了较为深入的研究,提出了若干使用技巧,希望能给c++教学和c++语言的运用提供一些有益的借鉴。  关键词:C++;I/O流;缓存;eof函数    0引言    与c语言不同,c
期刊
摘 要:介绍了Windows NT系统中的NDIS,应用程序与它的交互及怎样利用ARP协议在局域网中报告设备的在线状态:在主控机中运用辅助的开发包(Packet32)进行IP伪装,并用开发包直接对网卡进行操作,发送更改IP命令给设备,从而使设备融入生产网。  关键词:NDIS;Packet32;TCP/IP协议;IP数据包
期刊