最早最重要的 Ajax 謎題是 XMLHttpRequest (XHR) API。XHR 是一種用于在 Web 瀏覽器和 Web 服務(wù)器間傳輸數(shù)據(jù)消息的 JavaScript API。它支持瀏覽器使用 HTTP POST(將數(shù)據(jù)傳到服務(wù)器)或 GET 請求(從后臺服務(wù)器訪問數(shù)據(jù))。該 API 是大多數(shù) Ajax 交互的核心,也是現(xiàn)代 Web 開發(fā)的一項(xiàng)基本技術(shù)。
它也是 Microsoft® Internet Explorer® 團(tuán)隊(duì)貢獻(xiàn)給 Internet 的最好禮物。
這是真的。早在 2000 年,XHR 最先出現(xiàn)于 IE 5 中。最初是由 Alex Hopmann 編寫的 Microsoft ® ActiveX® 控件,創(chuàng)建 XHR 是為了處理 Microsoft Outlook® Web Access,旨在解決高級(當(dāng)時(shí))前端接口和 Microsoft Exchange Server 間的交互。
盡管 Microsoft 的軟件包不完全算是 “出身貧賤”,但 XHR 的發(fā)展遠(yuǎn)遠(yuǎn)超出了最初產(chǎn)品的范圍,后來在各個(gè)主要瀏覽器中得以實(shí)現(xiàn),甚至作為一種 W3C 標(biāo)準(zhǔn)被采用
先鋒
除了 Microsoft 之外,還有其他一些企業(yè)開始進(jìn)軍原型 Ajax 領(lǐng)域。許多企業(yè)都開始嘗試使用這些技術(shù),其中有兩個(gè)特別值得一提 — 一個(gè)是因?yàn)樗且粋€(gè)有趣且經(jīng)常引用的 Ajax 開發(fā)腳注,另一個(gè)是因?yàn)樗钦嬲龑⑦@些技術(shù)大眾化的 Internet 巨頭。
Oddpost
Oddpost 是 2002 年推出的基于 Web 的高級郵件客戶端。它利用許多目前人們所熟知的模式。在設(shè)計(jì)和交互方面,人們會想起桌面郵件客戶端。在系統(tǒng)內(nèi)部,Oddpost 使用開發(fā)人員稱為 DataPacks 的概念將小塊數(shù)據(jù)從服務(wù)器傳輸?shù)綖g覽器。這將帶來一種全新體驗(yàn)。
Oddpost 最后被 Yahoo!收購,成為 Yahoo! Mail 修訂版的基礎(chǔ)。
Google Maps、Google Suggest、Gmail 以及一篇重要文章
真正的變化開始于幾年后的 Gmail、Google Suggest 和 Google Maps 服務(wù)。這三項(xiàng) Ajax 技術(shù)的使用使得 Web 開發(fā)界沸騰起來。它的響應(yīng)能力和交互性對公眾而言是全新的。新的 Google 應(yīng)用程序很快引起了轟動(dòng)。
雖然了解它的人并不是很多,但 Web 開發(fā)界對此反響非常劇烈。當(dāng)時(shí),人們知道在 Web 應(yīng)用程序開發(fā)中出現(xiàn)了一些新的、激動(dòng)人心的內(nèi)容。但在很長一段時(shí)期內(nèi),這個(gè) “內(nèi)容” 一度模糊不清。
人們需要的是一篇讓該內(nèi)容明朗化的文章。
2005 年 2 月 18 日,Adaptive Path 的共同創(chuàng)立者兼總裁 Jesse James Garrett 撰寫了一篇題為 “Ajax: A New Approach to Web Applications” 的文章(參閱 參考資料)。在這篇文章中,他介紹了 Web 應(yīng)用程序設(shè)計(jì)開發(fā)的趨勢,諸如 Gmail 和 Google Maps 這類應(yīng)用程序人們一直都在使用。他稱這種趨勢為 “可能引發(fā) Web 開發(fā)的根本性變革。”
他還為這種模式命名,這是一個(gè)重要的時(shí)刻,因?yàn)閺倪@一刻起人們開始重點(diǎn)關(guān)注這一新趨勢,每個(gè)人(甚至是非專業(yè)人員)在談及 Web 開發(fā)界近期最新變化時(shí)都會提到它。在本文中,他是這樣介紹 Ajax 這種技術(shù)的:
本文的總體影響比較大。密集的大肆宣傳與亟待開發(fā)的創(chuàng)造力和能源相碰撞,掀起了一場革命,這實(shí)屬難得一見。由于 Ajax 被世界范圍的新一代創(chuàng)業(yè)企業(yè)所采用,它迅速走向 Web 開發(fā)范式的前沿。Ajax 從一個(gè)尋求市場策略的模糊趨勢一躍成為現(xiàn)代 Web 設(shè)計(jì)的開發(fā)的關(guān)鍵組成部分。