Rails系统中的AJAX开发技术简析

ajax|rails

  一、 Ajax的简短历史

  在短短几个月内,Ajax从一种十分模糊稀罕的技术一下变成最热门的东西。本文将介绍极其容易使用的Ajax支持-作为Ruby on Rails web应用程序框架的一部分实现。

本文不是一个详细的教程,所以我假定你已经了解一点关于如何组织和构建一个Rails web应用程序的知识。

  最开始出现的是万维网。比较于桌面应用程序,web应用程序相当缓慢和沉闷。无论如何,人们都喜欢上了web应用程序,因为他们无论在什么地方都能上网,只要身边的计算机上安装一个浏览器就行。之后,微软在Internet Explorer 5中创建了XMLHttpRequest,它使得浏览器端JavaScript可以与web服务器在后台进行通讯而不需要浏览器显示一新的web页面。这使得人们有可能开发更具有流畅性和响应性的web应用程序。Mozilla不久在它的浏览器中也实现了XMLHttpRequest,还有Apple(Safari浏览器)和Opera等公司。

  XMLHttpRequest原先一定是Web上的一个被保持得最好的秘密。自从它在1998年初次登场,只有很少几个站点使用它,而大多数开发者,如果他们曾经了解过它的话,也从未使用过它。Google最终改变了这一现状-它发行了一系列的高度轮廓性的web应用程序-在XMLHttpRequest技术支持下,它们拥有平滑的新颖的UI。最具有视觉吸引力的是Google Maps,它给你产生这样的幻想-能够在它的很小的窗口中围绕着一个无限大小的地图拖动鼠标。

  当Google的突出对XMLHttpRequest的使用的事实戏剧性地表明完全可以大大改进web应用程序UI效果的时候,是Jesse James Garrett的一篇论文最终给了这种技术一个可用的名字:Ajax(异步JavaScript和XML)。如果还不了解它的话,我们的整个业界至今可能还在等待之中。如今新的Ajax名字就象疾风野火迅速传播开来。我从来没见过如此迅速和这么亲近地采纳一种新技术!

  二、 传统型Web应用程序与Ajax应用程序的对比

  让我们通过分析一个使用案例-把一个新项插入到一个列表中-来看一下一个Ajax web应用程序最本质的所在。

  在例中实现了一典型用户接口-在一个web页面中显示当前列表,后面跟着一个输入字段-用户在此可以输入一个新项的文本。当用户点击一个新建项目按钮时,应用程序实际上创键并把一个新项插入到列表中。
 
  在这种情况下,一传统型web应用程序会发送输入字段值到服务器;然后,服务器作用于数据(通常通过更新一数据库)并通过发送回一个新的web页面-它显示一个被更新后的包含该新项的列表-作为响应。这种情况占用了很多带宽,因为大多数新的页面内容与原先的完全一样。这个web应用程序的性能随着列表的增长而逐渐下降。

  相反,一个Ajax web应用程序在后台发送输入字段到服务器并且只更改当前web页面受到影响的部分。这大大提高了用户接口的响应能力,使它感觉起来象一个桌面应用程序。

  你可以亲自试验一下这些效果。下面是一些到不同博客的链接,其中的一个使用Ajax来发送评价而另一个没用。你可以在它们之间相互寄送进行实验:

  ·传统型的Web应用程序

  ·Ajax Web应用程序

  注意,Ajax仅仅在于使用性。但是,就象任何技术一样,你可以高效地使用它,也可能低效地使用。在展示了怎样使用Ajax之后,我将给出一些关于何时使用Ajax的简单建议。

  三、 怎样在Web应用程序中使用Ajax

  在你的web应用程序中使用Ajax技术的较麻烦的方法是创建你自己的定制JavaScript-它直接使用XMLHttpRequest对象的API。为此,你必须处理每种浏览器的特性。

  一个较容易些的办法是使用一个JavaScript库-它提供了较高级的Ajax服务并且隐藏了浏览器之间的差别。象DWR,Prototype,Sajax和Ajax.NET这样的库都是很好的选择。

  最容易的办法是使用Rails中内建的Ajax工具。事实上,Rails使Ajax变得如此容易,以至于在典型情况下,使用Ajax和不用变得几乎一样容易。

  四、 Rails是怎样实现Ajax的

  Rails拥有一个简单的一致性模型来实现Ajax操作。

  一旦浏览器生成并显示了起始web页面,不同的用户操作要求它显示一个新的web页面(就象任何传统型的web应用程序)或触发一个Ajax操作:

  1. 发生一个触发器行动。这可能是用户点击一个按钮或一个超级链接或者用户改变了表单中的数据或字段中的数据,或只是一个周期的触发器(基于一个定时器)。

  2. 与触发器相联系的数据(一个字段或一个完整的表单)经由XMLHttpRequest被异步地发送到服务器上的一个行动处理器。

  3. 服务器端行动处理器基于这些数据采取一些行动(这就是为什么称为一个行动处理器),并且返回一个HTML片断作为它的响应。

  4. 客户端JavaScript(由Rails自动地创建)收到该HTML片断并且使用它更新当前HTML页面指定的部分,经常是一个<div>标签的内容。

  一个到服务器的Ajax请求也可能返回任意的数据,但是我将仅讨论一下HTML片断。真实的美丽在于Rails使得在你的web应用程序中实现这些是多么地容易。
[1] [2] [3] [4]  下一页

时间: 2025-01-07 03:48:39

Rails系统中的AJAX开发技术简析的相关文章

Rails系统中的AJAX开发技术简析(2)

ajax|rails 五. 使用link_to_remote Rails有若干帮助者方法以在你的视图的模板中实现Ajax.一种最简单且很通用的方法就是link_to_remote().让我们考察一个简单的web页面-它实现询问时间并且有一个链接,用户可以点击这个链接来获得当前的时间.该应用程序经由link_to_remote()使用Ajax以检索时间并且显示它于web页面. 我的视图模板(index.rhtml)看起来象: <html><head><title>Ajax

Rails系统中的AJAX开发技术简析(3)

ajax|rails 六. 使用form_remote_tag 这个form_remote_tag()帮助函数与link_to_remote()很相似,除了它也发送一个HTML表单的内容之外.这意味着该行动处理器可以使用用户输入的数据来形成响应.这个实例显示了一个web页面-它有一个列表和一个支持Ajax的表单-该表单能够让用户添加一些选项到该列表中. 我的视图模板(index.rhtml)看上去象: <html><head><title>Ajax List Demo&

Rails系统中的AJAX开发技术简析(1)

ajax|rails 一. Ajax的简短历史 在短短几个月内,Ajax从一种十分模糊稀罕的技术一下变成最热门的东西.本文将介绍极其容易使用的Ajax支持-作为Ruby on Rails web应用程序框架的一部分实现.本文不是一个详细的教程,所以我假定你已经了解一点关于如何组织和构建一个Rails web应用程序的知识. 最开始出现的是万维网.比较于桌面应用程序,web应用程序相当缓慢和沉闷.无论如何,人们都喜欢上了web应用程序,因为他们无论在什么地方都能上网,只要身边的计算机上安装一个浏览

Rails系统中的AJAX开发技术简析(4)

ajax|rails 七. 使用观察器 Rails能够让你监视一个字段的值,并且在无论何时字段值发生变化时,都作一次到一个行动处理器的Ajax调用.当前被观察字段的值被发送到本次调用相关的寄送数据的行动处理器中. 最常用的一种情况是实现一个实况查找: <label for="searchtext">Live Search:</label><%= text_field_tag :searchtext %><%= observe_field(:se

浅谈AJAX开发技术_AJAX相关

AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML),AJAX并不是一项新的技术,它产生的主要目的是用于页面的局部刷新,从之前的代码开发来看,读者可以发现,每当用户向服务器端发出请求时,那怕需要的只是简单的更新一点点的局部内容,服务器端都会将一个整体的页面进行刷新,并重新生成代码,这样一来程序的性能肯定会有所降低的,而如果采用了AJAX技术之后,就可以实现局部的内容变更,而不用再进行整体的页面刷新,显然处理的性能要比前者高很多 . 在AJA

光伏发电系统中的蓄能技术

1.光伏发电系统中蓄能技术的作用 光伏发电系统中的蓄能技术是转移高峰电力.开发低谷用电.优化资源配置.保护生态环境的一项重要技术措施.在我国,蓄能技术的推广应用刚刚起步,虽然推广应用的面很小,但效益明显,潜力很大.蓄能技术特别适用于可再生能源的光伏发电系统,由于可再生能源的不稳定性,导致其不能连续运行,因此,蓄能技术在光伏发电系统中有着非常重要的作用.在光伏发电系统中蓄能技术的作用如下: 1)负荷调节作用.能量存储装置可在电力系统的负荷低谷期充电,负荷高峰期放电. 2)负荷跟踪.超导蓄能系统.蓄

浅谈AJAX开发技术

AJAX(Asynchronous JavaScript and XML,异步JavaScript和XML),AJAX并不是一项新的技术,它产生的主要目的是用于页面的局部刷新,从之前的代码开发来看,读者可以发现,每当用户向服务器端发出请求时,那怕需要的只是简单的更新一点点的局部内容,服务器端都会将一个整体的页面进行刷新,并重新生成代码,这样一来程序的性能肯定会有所降低的,而如果采用了AJAX技术之后,就可以实现局部的内容变更,而不用再进行整体的页面刷新,显然处理的性能要比前者高很多 . 在AJA

hadoop 在win系统中的eclipse开发测试问题及解决

hadoop 在win系统中的eclipsehttp://www.aliyun.com/zixun/aggregation/13508.html">开发测试问题及解决 博客分类: hadoopeclipse hadoopeclipsecygwin hadoop 在win系统中的eclipse开发测试问题及解决 一· 在win系统下安装cygwin的步骤不在赘述,常见错误如下:问题1] # /usr/local/sbin/sshd/usr/local/sbin/sshd: error whi

Oracle的数据字典技术简析_oracle

正在看的ORACLE教程是:Oracle的数据字典技术简析.数据字典是Oracle存放有关数据库信息的地方,其用途是用来描述数据的.比如一个表的创建者信息,创建时间信息,所属表空间信息,用户访问权限信息等.当用户在对数据库中的数据进行操作时遇到困难就可以访问数据字典来查看详细的信息. Oracle中的数据字典有静态和动态之分.静态数据字典主要是在用户访问数据字典时不会发生改变的,但动态数据字典是依赖数据库运行的性能的,反映数据库运行的一些内在信息,所以在访问这类数据字典时往往不是一成不变的.以下