Ajax已经改变了Web应用程序的开发方式,对于开发者来说,Ajax仍然是创新的源泉。
虽然Ajax在2005年就已经正式开始,术语Ajax一词才有,但它的历史和影响可以追溯到90年代。1999年,微软为它的浏览器推出了一种通过HTTP在后台异步检索数据的方法。
几年后,开发者完善了Ajax的异步能力,使它可以向Web服务器输入,检索结果并输出,而所有这些都无需重新加载页面。
在那个时候,Ajax已经改变了Web应用程序的开发方式,对于开发者来说,Ajax仍然是创新的源泉。
Ajax并不是一种编程语言,而是各种技术的结合体。它的核心是:
- 用于呈现的HTML、XHTML和CSS;
- 用于数据交换的XML和用于数据处理的XSLT。XML是一种应用系统之间交换原始数据简单而标准的方法。它的成功不在于它容易被人们书写和阅读,更重要的是,它从根本上解决了应用系统间的信息交换。为了使数据便于人们的阅读理解,需要将信息显示或打印出来,例如将数据变成一个HTML或PDF文件,甚至是一段声音;同样,为了使数据适合不同的应用程序,需要将一种数据格式转换为另一种格式,比如可能是一个文本文件,一个SQL语句,一个HTTP信息,一定顺序的数据调用等。而XSLT就是用来实现这种转换功能的语言);
- 用户动态显示和数据交互的DOM(Document Object Model)。DOM可以以一种独立于平台和语言的方式被访问和修改一个文档中的内容和结构;
- JavaScript则作为这些技术的“粘合剂”。VBScript是另一个客户端脚本语言,尽管JavaScript是最流行的一个,因为它与大多数Web浏览器兼容。
Gareth Price说,软件设计师,就职于www.webstandard.com,一家网站开发公司:“以下是你可以平衡利用Ajax能力的五种方式。”
实时内容更新
Java可以使开发者向用户呈现最新的数据,而无需他们点击刷新。
例如:Twitter.com feed
当您正在查看tweet(Twitter.com的一个应用),并在同一页面上盯几秒,Twitter使用的Ajax技术会向你发一个小通知,通知有多少新的tweet,而无需刷新界面。而其他脚本工具则要求用户刷新页面,才可以查看任何更新。
自动完成补充文本
可以优化Ajax,把快速的查询结果发送给用户(比如在Google查询时,每当你输入一个字或一个词,Google会在文本框中显示很多类似的搜索词),即使查询只有一个字母或几个字母组成。每次用户按下一个键,可以用Ajax发送查询到服务器,并显示结果。
例如:Google检索工具条
表单验证和提交
表单仍然是从用户获得详细输入的主要方法,但往往会让用户迷茫。“通过Ajax,你可以实时地呈现数据验证的结果,并突出显示给用户他们输入错误的文本。” Price说。
丰富的UI
“桌面应用程序的开发者过去看不起Web应用程序。” Price说。“现在不会了,看看GoogleDocs。”
外部数据(mashups and widgets)
“多亏Ajax,你不在局限于从你自己的服务器上获得数据,”Price说。“而是从任何让你取的地方获得。”
例如:Google AdSense(GoogleAdSense可以让具有一定访问量的网站成为Google内容发布商。如果一个网站加入Google AdSense,即成为Google的内容发布商,作为内容发布商可以在自己网站上显示Google关键词广告,Google根据会员网站上显示的广告被点击的次数支付佣金。如果你拥有自己的网站并有一定的访问量,就可免费申请加入Google AdSense,无论网站是个人的还是商业的,当然也不是随便加入的)。
顺便说一下,什么是mashup?它是当今网络上新出现的一种现象,将两种以上使用公共或私有的 Web 应用融合在一起,形成的一个新应用程序。mashup在Geek群体和互联网玩家之中获得极大的欢迎,mashup未必需要很高的编程技能,只需熟悉APIs和网络服务的工作方式就能进行开发。很多公司,像Yahoo、Google等都提供开放的接口,来吸引这个群体。那么究竟什么是mashup?假如你是一个Web开发者,通过一个API 找到附近哪些地方有犯罪,然后访问Google地图的APIs,把这两个内容整合起来,那么你就得到了一个标有犯罪地点的地图。这个地图就叫Mashup。
而 widget 是部件,你可以理解为 Control 或是 Component,也就是控件或组件。
五件需要注意的事
Ajax创建的页面对于浏览器历史、返回按钮和标签是不可见的。
Price说,虽然有解决的方法,但页面加载仍然是呈现不同的、静态内容的最好方式。解决书签问题的大部分方案是使用URL片断标识符('#'后的URL的一部分)来追踪处于一个给定状态的应用程序,并允许用户返回它。
Ajax接口只有启用JavaScript时才展示
那些浏览器不支持JavaScript或XMLHttpRequest,或已禁用此功能的用户将无法正确使用依赖于Ajax的网页。
有些设备,如移动电话、个人数字助理(PDA)和屏幕阅读器,可能缺少Ajax的支持。
解决办法:使用非JavaScript技术。
多次轮询服务器可能会被大量请求所淹没
Price指出的解决方法是“适当调整你的系统,或是在繁忙时限制它。”
动态页面
一些使用Ajax应用程序的动态页面更新可能会干扰与用户的交互,特别是用户网络链接不稳定时。
该解决方案仅是尝试。
与XMLHttpRequest通信是复杂、冗长的
“jQuery可以让你使一次连接一个Ajax,”他说。作为加强用户体验的一种工具,Price说,Ajax创造最好的是用户不会察觉到,他们只知道,你的应用程序很快、健壮、易于使用。