什么是Ajax?它是如何运作的?
Ajax是异步JavaScript脚本和XML(Asynchronous JavaScript and XML)的缩写,用来使浏览器端应用程序和服务器端进行通信。在Ajax出现以前,浏览器端应用程序是无法直接和服务器进行通信的,只能使用刷新和加载页面的方法来实现。而有了Ajax之后,浏览器和服务器端就可以自由通信了。
以下简述Ajax脚本的运行路径:
本文将讨论我们如何通过不同的脚本来实现各种各样的功能。
1、登录表单
按传统的做法,用户登录时会被定向到一个登录页面,随后再返回登录前的页面。使用Ajax后,用户可以直接在原页面输入用户名和密码。Ajax会将这些信息发送给服务器进行验证。服务器会返回数据告知浏览器是否验证通过,浏览器可相应地更新页面。Digg就有这样的登录表单。
示例:Digg.com (页面顶端)
插件:jQuery Form Plugin
2、自动完成
谷歌是最早开始使用Ajax的公司之一,其搜索建议功能则是最先使用Ajax的地方,并开发了第一个自动完成工具。在搜索框输入数据后,Ajax会从服务器端接受数据,找出数据库中存储的常用搜索关键字并进行提示。自动完成功能是非常有用的,当表单可以输入多个可能的值时,显示一个下拉列表框供用户选择,非常人性化。
示例:Google Search
插件:jq autocomplete
3、投票和排行
网页收藏站点如Digg、Reddit等往往会让用户来决定什么内容会放在首页,使用的方法便是投票。他们使用Ajax来实现这个功能,这样用户就能够方便快捷地表达自己的意见了。
示例:Reddit
4、使用用户内容更新
Twitter之所以流行的一大原因是其简单易用的界面。当用户发送了一个消息后,这条消息会立刻添加到用户的页面中,所有的相应内容都会进行更新。最近,Twitter开始使用Ajax对“热门话题”进行更新。每隔几秒,我们就可以知道大家在忙些什么、关注些什么,非常快速。
示例:Twitter
5、表单的提交和验证
表单永远是最麻烦的东西,但Ajax让它们变得友好起来。Ajax可以派很多用处,从上面提到的自动完成功能,再到现在的表单验证和提交。有些网站使用Ajax检查用户输入的数据是否达到了某些要求,如密码长度或者E-mail地址、URL地址是否合法等
示例:10 Cool jQuery Form Plugins
6、聊天室和即时消息
在线聊天室在IRC之后多年才出现的只用应用。如今,聊天室和即时消息可以完全由浏览器来处理。在聊天室或即时消息应用程序中,Ajax通常要做两件事情,可以想象一下你的耳朵和嘴巴。你的嘴巴要告诉服务器你发送了一条消息,而耳朵则要保持和服务器的联系,以便接受对伐发送的消息,并显示在页面上
示例:Meebo Chat (使用了Ajax)
插件:GMail/Facebook Style Chat Script
7、灵巧的用户界面
Ajax的一个常规应用就是创建整洁、灵巧的用户界面,使用户能在一个页面中做更多的事情。它的好处体现在两个地方:首先,它能使应用程序的响应更为快速,操作更为简单;其次,它能减少浏览器向服务器的请求次数,从而减少带宽和加载时间。有一个免费的上传服务,名为Drop.io,使用的就是这项技术。而谷歌则更是把这项应用发挥到了极致,使用Ajax开发出了类桌面应用程序,如谷歌文档、谷歌地图等。
参考:jQuery UI Library
8、插件
Ajax不仅可以调用本地资源,还能够和其他服务器进行通信。像Wordpress之类的CMS(Content Management System 内容管理系统),它们的插件就是用Ajax实现的。又如Google Adsense,用的也是这样的方法。
示例:Google Adsense
插件:将外部内容加载到div中
9、使用Lightbox代替弹出窗口
弹出窗口拦截程序越来越流行了,原因当然是弹出窗口实在是很烦人。而Lightbox是在浏览器窗口内部显示的,所以拦截程序不能拿它怎么样。而且Lightbox也不会让用户感到多厌烦,所以有些人就用它来作广告,如Darren Rowe的ProBlogger.com。Lightbox同样可以用来做登录表单或注册表单,比如匿名用户在Digg上投票时会被要求进行注册。
示例:Logo Sauce
插件:Lightbox Plugin
10、Ajax和Flash的结合
很少有人会拿Ajax和Flash和一起使用,但是这样做却能起到非常好的效果。Flash游戏网站Kongregate使用了这项技术,效果很棒。通过使用他们的API,用户可以在游戏中赢取各种“徽章”,并使用Ajax将数据传输给服务器,更新用户的信息。
示例:Kongregate
插件:jQuery Flash Plugin
【本文翻译仅为外语学习及阅读目的,原文作者个人观点与译者及译言网无关】
标签:AJAX,