Skip to content

Ajax与Comet

2005 年,Jesse James Garrett 发表了一篇在线文章,题为 "Ajax: Anew Approach to Web Applicaions"

他在这篇文章里介绍了一种技术,用他的话说,就叫 Ajax,是对 Asynchronous JavaScript + XML 的简写

这一技术能够向服务器请求额外的数据而无须写在页面,会带来更好的用户体验。

Garrett 还解释了怎样使用这一技术改变自从 Web 诞生以来就一直沿用的“单击,等待”的交互模式

Ajax 技术的核心是 XMLHttpRequest 对象(简称XHR),这是由微软首先引入的一个特性,其他浏览器提供商后来都提供了相同的实现。
在 XHR 出现之前,Ajax 式的通信必须借助一些 hack 手段来实现,大多数是使用隐藏的框架或内嵌框架

XHR 为向服务器发送请求和解析服务器响应提供了流畅的接口

能够以异步方式从服务器取得更多信息,意味着用户单击后,可以不必刷新页面也能取得新数据。
也就是说,可以使用 XHR 对象取得新数据,然后再通过 DOM 将新数据插入到页面中。
另外,虽然名字中包含 XML 的成分,但 Ajax 通信与数据格式无关;这种技术就是无须刷新页面即可从服务器取得数据,但不一定是 XML 数据

WebSockets

要说最令人津津乐道的新浏览器 API,就得数 WebSockets 了。
WebSockets 的目标是在一个单独的持久连接上提供全双工、双向通道。

在 JavaScript 中创建了 Web Socket 之后,会有一个 HTTP 请求发送到浏览器以发起连接。
在取得服务器响应后,建立的连接会使用 HTTP 升级从 HTTP 协议交换为 Web Socket 协议。
也就是说,使用标准的 HTTP 服务器无法实现 Web Sockets,只有支持这种协议的专门服务器才能正常工作