用 AjaxTags 简化 Ajax 开发(2)
作者:Daniel Wintschel 来源:IBM developerWorks 发布时间:2007-11-27 00:00:00
Ajax 是否是为了清洁之用?
还只是几年之前,即使是顽固的开发人员也会将 Ajax 与由 Colgate-Palmolive 开发和生产的那个流行清洁剂联系在一起,而不是将其视为一种可以提高在线体验的 Web 开发技巧。现在,Ajax 技术越来越受欢迎,大家不禁都想要获得有关其工作原理以及在何种情况下可以使用它的全部信息。
工作原理
在开发和编写 Ajax 应用程序时,需要理解前台和后台的工作原理。如下所示的是应用程序内的一种典型的事件流:
用户请求一个网页。
用户更改此网页上的状态(例如,单击一个链接、从选择框中进行选择、单击了某个单选按钮或复选框)。
状态的改变会击发事件,调用一个 JavaScript 函数。
JavaScript 函数实例化一个 XmlHttpRequest 对象,该对象会在后台异步地产生一个对服务器的 HTTP 请求(注意,没有发生页面刷新)。
服务器响应,向 JavaScript 函数返回所请求的数据。
JavaScript 函数通过使用额外的 JavaScript 和/或 DHTML 更新和修改所正在查看的页面。
负责更新当前网页的某些部分的 JavaScript 需要知道哪个 HTML 元素负责更新。要实际动态更新给定页面内的特定元素(在无需重载此页面的情况下),需要分配给这些 HTML 元素一个惟一 ID。清单 1 所示的是此演示中的一个简单的例子,稍后我们将对其进行更深入的分析:
清单 1. 为 HTML 元素分配 ID
<select id="model" disabled="disabled">
<option value="">Select model</option>
</select>
清单 1 为这个特定的选择框分配的 ID 为 model。通过这个 ID,就可以利用 JavaScript 轻松定位和处理所选元素及其内容。
AjaxTags API 使用的是某些很好的、开源的第三方 JavaScript 库,这些库会为您完成几乎全部的繁重编程工作。其中的一个好处是这些库均包括丰富的特性并经诸多浏览器广泛测试,所以尽可放心使用。AjaxTags 所使用的第三方库包括:
Prototype(一种带多种实用函数的 JavaScript 库)
Script.aculo.us(一种带多种可视效果的 JavaScript 库)
Overlibmws(一种 DHTML 弹出库)
何时使用 AjaxTags
在很多典型的环境中都可以使用 AjaxTags,这样一来,不仅可以方便开发人员,而且还可以提高应用程序的用户体验。其中的一些用例包括:
基于第一个下拉框中所做的选择来修改第二个下拉框的内容
基于单击或鼠标悬浮事件从服务器发起对额外信息的请求,而且无需刷新用户所查看的页面
基于用户输入的数据在服务器上执行计算,无需重载整个页面
让我们先来看一些如何将这些特性集成到应用程序中的实际例子


猜你喜欢
- 新版Django在admin后台直接删除一条数据时,file = models.FileField(upload_to=‘file'
- import wx import imagesclass DemoTaskBarIcon(wx.TaskBarIcon): &nb
- 海豚本文例子主要展示了如何使用补丁、路径和转换类绘制和操作给定的顶点和节点的形状。测试可用。import matplotlib.cm as
- 官方网站:http://www.extjs.com/演示地址:http://www.yaohaixiao.com/effects/sampl
- 一、Shutil 模块shutil其实也就是shell模块。其中包含一些函数,可以让我们在python程序中复制、移动、改名和删除文件。1.
- 第一种方法Python的cv2库中自带彩色转灰度的方法,而且非常简单,代码就9行,核心代码就1行。大题思路就是先读取一张彩色图片,然后在窗口
- bootstrap-table简介•1.1、bootstrap table简介及特征: &nb
- 综述:本文讨论了VBScript和 JScript之间的区别,以及它们的使用场合。推荐:Vbscript5.5中文语言参考手册chm格式下载
- 一、多进程的实现方法一# 方法包装 多进程from multiprocessing import Processfrom ti
- 右击开始图标,打开“命令提示符(管理员)”。1、输入代码,停止服务。 net stop M
- 目录什么是预处理?那么预处理有啥好处?Go实现 MySQL 的事务sqlx使用gin + mysql + rest full api&nbs
- IDA Pro 6.0使用Qt 框架实现了跨平台的UI。它的好处是插件编写者还可以直接使用 Qt 开发跨平台 UI。但是编剧呢?在这篇博文中
- 前言本文的文字及图片来源于网络,仅供学习、交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理。from math
- 笔者今天就谈谈自己对这两种操作模式的理解,并且给出一些可行的建议,跟大家一起来提高Oracle数据库的安全性。 一、非归档模式的利与弊。 非
- 一、粗心导致的语法错误SyntaxError1、input输入报错age=input('请输入你的年龄:')if age&g
- Python 下的单例模式要点:1.某个类只能有一个实例;2.它必须自行创建这个实例;3.它必须自行向整个系统提供这个实例方法:重写new函
- Series对象和DataFrame的列数据提供了cat、dt、str三种属性接口(accessors),分别对应分类数据、日期时间数据和字
- 目录一个不那么方便的解决方案:实战演练网站在线转换Postman今天介绍个神奇的网站!堪称爬虫偷懒的神器!我们在写爬虫,构建网络请求的时候,
- TensorFlow提供了TFRecords的格式来统一存储数据,理论上,TFRecords可以存储任何形式的数据。TFRecords文件中
- 本文实例讲述了Python使用lambda表达式对字典排序操作。分享给大家供大家参考,具体如下:lambda表达式也常用于字典排序,既然写到