你的位置:pcMing工作室 >> 资讯 >> 专业术语 >> 详细内容 在线投稿

解说ajax技术

排行榜 收藏 打印 发给朋友 举报 来源: 互联网   发布者:未知
热度110票  浏览3次 【共0条评论】【我要评论 时间:2010年2月18日 21:50

:Ymi\.N)T,C7Qt0术语Ajax用来描述一组技术,它使浏览器可以为用户提供更为自然的浏览体验。在Ajax之前,Web站点强制用户进入提交/等待/重新显示范例,用户的动作总是与服务器的“思考时间”同步。Ajax提供与服务器异步通信的能力,从而使用户从请求/响应的循环中解脱出来。借助于Ajax,可以在用户单击按钮时,使用JavaScript和DHTML立即更新UI,并向服务器发出异步请求,以执行更新或查询数据库。当请求返回时,就可以使用JavaScript和CSS来相应地更新UI,而不是刷新整个页面。最重要的是,用户甚至不知道浏览器正在与服务器通信:Web站点看起来是即时响应的。pcMing工作室 ~ nh"C ly8B
pcMing工作室5M8YsT3w T FrK
虽然Ajax所需的基础架构已经出现了一段时间,但直到最近异步请求的真正威力才得到利用。能够拥有一个响应极其灵敏的Web站点确实激动人心,因为它最终允许开发人员和设计人员使用标准的HTML/CSS/JavaScript堆栈创建“桌面风格的(desktop-like)”可用性。
w0@6Xloj+c0
7EOu2Ts0通常,在J2EE中,开发人员过于关注服务和持久性层的开发,以至于用户界面的可用性已经落后。在一个典型的J2EE开发周期中,常常会听到这样的话,“我们没有可投入UI的时间”或“不能用HTML实现”。但是,以下Web站点证明,这些理由再也站不住脚了:
+y:G3I6mw|h&B0pcMing工作室{4lEw;PTN
BackPack
5zMxA(G/D'P,n9G0Google Suggest
/J+}^"M%qNO#S\4\SqG0Google MapspcMing工作室 q"btb-Pmn)z2m
PalmSpherepcMing工作室`,~2L^1sVKL1x
所有这些Web站点都告诉我们,Web应用程序不必完全依赖于从服务器重新载入页面来向用户呈现更改。一切似乎就在瞬间发生。简而言之,在涉及到用户界面的响应灵敏度时,基准设得更高了。
wjhXkr _ v!]U`0pcMing工作室X&@%Q2_.y
定义AjaxpcMing工作室zqf7Xx?!L1P

5YaB;jU!CY]:I0Adaptive Path公司的Jesse James Garrett这样定义Ajax:pcMing工作室Z2T2B,mtY$V

x6s0{L'zY'}0Ajax不是一种技术。实际上,它由几种蓬勃发展的技术以新的强大方式组合而成。Ajax包含:pcMing工作室b(\RbJ)fds

CzsPY)UR$h0基于CSS标准的表示;
F cI9g^0使用Document Object Model进行动态显示和交互;pcMing工作室\FV:DL7I%b ~2[U
使用XMLHttpRequest与服务器进行异步通信;pcMing工作室#w/zr([R C7C o
使用JavaScript绑定一切。pcMing工作室i9w c8m4s.t-Y|[
这非常好,但为什么要以Ajax命名呢?其实术语Ajax是由Jesse James Garrett创造的,他说它是“Asynchronous JavaScript + XML的简写”。pcMing工作室DHJ mM/N%R
Ajax的工作原理pcMing工作室 S/Ku{%u'OB

$],L kls/k|$@0pcMing工作室\w:T~ Zh
Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。pcMing工作室El\-{)s6y)\ R:y&^N
pcMing工作室0Y6D['Q+[7[5zUb H
1 AJAX还是AJAH
!zm i#h&@2L4{0* AJAX的很多经典应用其实都是利用xmlhttp空间访问后台程序,后台程序返回脚本用eval回调或者返回简单数据的方式来开发。这样的开发模式的好处是设计简单轻巧,对熟悉dhtml的开发者来说上手会比较块,跨浏览器问题也容易解决,做简单的应用也够用。gmail,google suggest都是用这种方式。但是在我看来gmail已经吧AJAH应用到极限了,更复杂的数据结构用简单数据和回调方式来组织就开始有点力不从心了。pcMing工作室S;Y PUol evvrV

[ogF,C%x)pR0* 前AJAX的一种传统做法是后台返回完整的xml文件后用脚本(利用控件)解析xml后操作页面的dom节点来动态生成页面的一部分。这样作的优点是可以充分利用xml的强大表达能力传输各种数据结构,缺点是页面的dom操作效率不高,而且IE在dom操作的API上bug多多。之所以叫“前AJAX”,因为我们在AJAX这个名词出现前已经这样做了很多年了。pcMing工作室TS.z0ss

-B B.k`nJX1c,{0* AJAX另一种传统做法是后台返回完整的xml文件后用脚本(利用控件)解析xml后生成html代码再灌回页面的层中。这样的做法回避了页面dom操作的一些问题,在生成的内容比较多的时候利用一些字符串计算的优化技巧(主要是数组和正则的应用)可以相当高效的生成页面。在我看来这是未来的发展趋势。
1d`6eV:m0
8st0T!S m R5M0我现在的项目主要采用的是第三种方式,结合第二种。我使用的是自己的一个小巧的框架,模拟jsp的语法来生成html代码,但是依赖于浏览器的xml解析API,因此难以跨浏览器。google的开源项目ajaxslt提供了一个纯js的xslt解决方式,功能更强大,可以在页面中局部的应用xslt解析xml生成html或者其他形式的数据,但是带来了xslt这个技术门槛。sf上的ZK似乎也不错,但是带来的是xul这个技术门槛,同时后台被绑定在了J2EE服务器上面。pcMing工作室1ddn/U*tf.I

:o%x\Mdz~:dU0z v02 CACHE
?s|h}db0如果使用xmlhttp控件,在发起http请求的时候IE会包办cache策略,很多时候更新了数据却无法获得更新后的数据。一开始试图用传统方式在URL后面加随机数来强制更新,但是IE仍然距不发出新的请求。pcMing工作室1s3?onzu{
一个解决方法是在后台写expires: 0或者其他的禁止前台cache的头,但是这样在数据没有更新的时候又会带来不必要的服务器压力、响应延迟和带宽浪费。
#c!R'u;eWC0一个稍微好一点的解决方法是,前台在提交数据以后,需要强制更新数据的时候:
%kABQ)P8F,[0pcMing工作室j)N;l n-m2p&k/Dt
xmlhttp.setRequestHeader("If-Modified-Since","0");pcMing工作室T*T(ebW`

}K%U ~6N!_*AwN*iKG7o&L03 系统错误: -1072896748。pcMing工作室4f7vVGhm*Q
用xmlhttp接收到数据的时候经常是用xmldom.loadXML(xmlhttp.responseXML.xml)来判断返回的数据的正确性,但是如果后台送过来不正确的xml的时候有时回触发-1072896748系统错误。这是因为xmlhttp.responseXML已经没有解析到东西了,我们还试图访问它的xml属性而触发的。pcMing工作室:Am/xsma4] u:owC
解决的方法是在使用responseXML.xml 或者 responseText的时候要做try/catch:
.yYZs1Dqe0try{var tmp = xmlhttp.responseXML.xml}catch(ex){err=true;}
)F+i7R h6R0b0有些人喜欢catch的时候判断 exception.description=="系统错误: -1072896748。" , 如果客户端不是简体中文版的系统的时候就判断不到了。其实这个地方只要有异常,都必须走异常处理流程了,不用区分的那么仔细。

2i![X Z;W-u b${;eo*s0pcMing工作室%g7B8~#uj#p t0s~

v1b_3y4GP0pcMing工作室7W| NN3G#Uh

%K |:nD#XG]E Y0pcMing工作室 tUW2@\nZ,A0n

页面重载提出了一个在Web应用开发中最大的可用性障碍,对于java开发来说也是一个重大的挑战。在本系列中,作者Philip McCarthy介绍了通过后台通道的方法来创建动态Web应用的经验。Ajax(Asynchronous JavaScript and XML)是一个结合了Java技术、XML、以及JavaScript的编程技术,可以让你构建基于Java技术的Web应用,并打破了使用页面重载的惯例。
0z~qi P0
V z#U b1`0Ajax,异步JavaScript与XML,是使用客户端脚本与Web服务器交换数据的Web应用开发方法。这样,Web页面不用打断交互流程进行重新加裁,就可以动态地更新。使用Ajax,你可以创建接近本地桌面应用的,直接的、高可用的、更丰富的、更动态的Web用户接口界面。pcMing工作室c6\qtW!b \U'g

m Ri-^MwI-A0Ajax不是一个技术,它更像是一个模式—标志并描述有用的设计技巧的一种方法。对于刚了解它的许多开发人员来说,它是一种新的感觉,但是实现Ajax的所有组件都已存在了许多年。当前的热闹是因为在2004与2005年出现了一些基于Ajax的非常动态的WebUI,尤其是Google的GMail与Maps应用系统、与照片共享网站Flickr。这些UI充分地使用了后台通道,也被一些开发者称为“Web 2.0”,并导致了大家对Ajax应用兴趣的猛涨。

k/X4o4\eB$B0
顶:6 踩:7
对本文中的事件或人物打分:
当前平均分:-0.5 (26次打分)
对本篇资讯内容的质量打分:
当前平均分:0.24 (38次打分)
【已经有33人表态】
5票
感动
8票
路过
2票
高兴
6票
难过
6票
搞笑
2票
愤怒
1票
无聊
3票
同情
上一篇 下一篇
发表评论
换一张

网友评论仅供网友表达个人看法,并不表明本网同意其观点或证实其描述。

查看全部回复【已有0位网友发表了看法】

网络资源