love is a temple:什么是Ajax

来源:百度文库 编辑:杭州交通信息网 时间:2024/04/28 01:16:52

http://www.xker.com/Html/zhuanti/20060110178.html
这是全部关于Ajax的咨询,希望能找到你想要的

我所知道的是荷兰的足球队——阿贾克斯

Ajax就是Asynchronous JavaScript + XML的缩略语,顾名思义,Ajax其实就是多种开发技术的有机组合,包括了 :

XHTML和CSS技术实现标准界面;
Document Object Model技术实现动态显示和交互功能;
XML和XSLT技术实现数据的交换和维护;
XMLHttpRequest技术实现异步数据检索;
JavaScript把一切联系起来。
传统的网络程序工作流程基本如下:客户在网页上的操作转化为HTTP请求传回服务器,而服务器接受请求以及相关数据、解析数据并将其发送给相应的处理单元后,将返回的数据转成HTML页发还给客户,这种工作流程总会让用户感觉不太舒服,因为当服务器处理数据的时候,用户只能等待。显然用户不喜欢每作一步操作后,都需要等待服务器返回新的网页,用户希望的是顺畅的使用网络程序,甚至感觉不到服务器的存在。

而Ajax软件可以摆脱这种停停走走的网络交互方式,实现的方法是Ajax在客户与服务器之间插入了Ajax engine,在会话开始后,浏览器装载一个Ajax engine,而不是一个网页,Ajax engine是用JavasSript写制的,负责绘制客户看到的界面和与服务器通信,Ajax Engine可以用异步通讯的方式将用户的输入发送给服务器,从而避免用户看着空白的网页等待服务器的响应。用户的操作会调用一个Ajax engine的javascript函数,在以前这通常会触发一个HTTP请求给服务器,所有对用户操作的响应不需要再通过服务器,诸如简单的数据检查、修改数据甚至检索网页,engine都可以处理,如果engine必须要服务器返回数据以响应用户的请求,比如需要服务器处理提交的数据或者装载新的代码或数据等,engine会采用异步通讯的方式发出请求,通常用XML,从而不会影响用户与程序的交互。

Ajax并不只是技术上的构想,而已经在业界得到了应用,Google的很多产品都采用了Ajax技术,例如上面讲到的Google Suggest, Google Map和Google Groups等,随着网络的发展,Ajax一定会被更广泛的使用,运用Ajax开发网络应用的最大挑战并不在于技术,因为其所使用的技术都已经很成熟、稳定和易于理解,对于网络应用开发者来说,最大的挑战在于突破陈旧的思维方式,开始想象一个更加宽广的世界。

Ajax的定义
Ajax不是一个技术,它实际上是几种技术,每种技术都有其独特这处,合在一起就成了一个功能强大的新技术。Ajax包括:

XHTML和CSS

使用文档对象模型(Document Object Model)作动态显示和交互

使用XML和XSLT做数据交互和操作

使用XMLHttpRequest进行异步数据接收

使用JavaScript将它们绑定在一起

传统的web应用模型工作起来就象这样:大部分界面上的用户动作触发一个连接到Web服务器的HTTP请求。

服务器完成一些处理---接收数据,处理计算,再访问其它的数据库系统,最后返回一个HTML页面到客户端。这是一个老套的模式,自采用超文本作为web使用以来,一直都这样用, 但看过《The Elements of User Experience》的读者一定知道,是什么限制了Web界面没有桌面软件那么好用。

图1: 传统Web应用模型(左)与Ajax模型的比较(右).

这种旧的途径让我们认识到了许多技术,但它不会产生很好的用户体验。当服务器正在处理自己的事情的时候,用户在做什么?没错,等待。每一个动作,用户都要等待。

很明显,如果我们按桌面程序的思维设计Web应用,我们不愿意让用户总是等待。当界面加载后,为什么还要让用户每次再花一半的时间从服务取数据?实际上,为什么老是让用户看到程序去服务器取数据呢?

Ajax如何不同凡响

通过在用户和服务器之间引入一个Ajax引擎,可以消除Web的开始-停止-开始-停止这样的交互过程. 它就像增加了一层机制到程序中,使它响应更灵敏,而它的确做到了这一点。

不像加载一个页面一样,在会话的开始,浏览器加载了一个Ajax引擎---采用JavaScript编写并且通常在一个隐藏frame中。这个引擎负责绘制用户界面以及与服务器端通讯。Ajax引擎允许用异步的方式实现用户与程序的交互--不用等待服务器的通讯。所以用户再不不用打开一个空白窗口,看到等待光标不断的转,等待服务器完成后再响应。

图 2: 传统Web应用的同步交互过程(上)和Ajax应用的异步交互过程的比较(下).

通常要产生一个HTTP请求的用户动作现在通过JavaScript调用Ajax引擎来代替. 任何用户动作的响应不再要求直接传到服务器---例如简单的数据校验,内存中的数据编辑,甚至一些页面导航---引擎自己就可以处理它. 如果引擎需要从服务器取数据来响应用户动作---假设它提交需要处理的数据,载入另外的界面代码,或者接收新的数据---引擎让这些工作异步进行,通常使用XML, 不用再担误用户界面的交互。