fbpx
维基百科

AJAX

AJAX即“Asynchronous JavaScript and XML”(非同步的JavaScriptXML技術),指的是一套综合了多項技術的瀏覽器網頁開發技術。Ajax的概念由傑西·詹姆士·賈瑞特所提出[1]

Ajax
编程范型Webapp, HTML, JavaScript, DHTML, DOM, XMLHttpRequest, JSON, XML, XSLT, XHTML, CSS
設計者杰西·詹姆士·贾瑞特
发行时间2005年2月18日,​18年前​(2005-02-18

传统的Web应用允许用户端填写表单(form),当送出表单时就向網頁伺服器发送一个请求。伺服器接收并处理传来的表单,然后送回一个新的网页,但这个做法浪费了许多带宽,因为在前后两个页面中的大部分HTML码往往是相同的。由于每次应用的沟通都需要向伺服器发送请求,应用的回應时间依赖于伺服器的回應时间。这导致了用户界面的回應比本機应用慢得多。

与此不同,AJAX应用可以仅向伺服器发送并取回必須的数据,并在客户端采用JavaScript处理来自伺服器的回應。因为在伺服器和浏览器之间交换的数据大量减少,伺服器回應更快了。同时,很多的处理工作可以在发出请求的客户端机器上完成,因此Web伺服器的负荷也减少了。

类似于DHTMLLAMP,AJAX不是指一种单一的技术,而是有机地利用了一系列相关的技术。虽然其名称包含XML,但实际上数据格式可以由JSON代替以进一步减少数据量。而客户端与服务器也并不需要异步。一些基于AJAX的“派生/合成”式(derivative/composite)的技术也正在出现,如AFLAX

应用 编辑

发展史 编辑

20世纪90年代,几乎所有的网站都由HTML页面实现,服务器处理每一个用户请求都需要重新加载网页。这样的处理方式效率不高。用户的体验是所有页面都会消失,再重新载入,即使只是一部分页面元素改变也要重新载入整个页面,不仅要刷新改变的部分,连没有变化的部分也要刷新。这会加重服务器的负担。

这可以用异步加载来解决。1995年,JAVA语言的第一版发布,随之发布的的Java applets(JAVA小程序)首次实现了异步加载。浏览器通过运行嵌入网页中的Java applets与服务器交换数据,不必刷新网页。1996年,Internet Explorer将iframe元素加入到HTML,支持局部刷新网页。

1998年前后,Outlook Web Access小组写成了允许客户端脚本发送HTTP请求(XMLHTTP)的第一个组件。该组件原属于微软Exchange Server,并且迅速地成为了Internet Explorer 4.0[2]的一部分。部分观察家认为,Outlook Web Access是第一个应用了Ajax技术的成功的商业应用程序,并成为包括Oddpost的网络邮件产品在内的许多产品的领头羊。但是,2005年初,许多事件使得Ajax被大众所接受。Google在它著名的交互应用程序中使用了异步通讯,如Google讨论组、Google地图、Google搜索建议、Gmail等。Ajax这个词由《》一文所创,该文的迅速流传提高了人们使用该项技术的意识。另外,对Mozilla/Gecko的支持使得该技术走向成熟,变得更为简单易用。

优缺点 编辑

使用Ajax的最大优点,就是能在不更新整个页面的前提下维护数据。这使得Web应用程序更为迅捷地回应用户动作,并避免了在网络上发送那些没有改变的信息。

Ajax不需要任何浏览器插件,但需要用户允许JavaScript在浏览器上执行。就像DHTML应用程序那样,Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试。随着Ajax的成熟,一些简化Ajax使用方法的程序库也相继问世。同样,也出现了另一种辅助程序设计的技术,为那些不支持JavaScript的用户提供替代功能。

对应用Ajax最主要的批评就是,它可能破坏浏览器的后退與加入收藏書籤功能[3]。在动态更新页面的情况下,用户无法回到前一个页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙;用户通常都希望单击后退按钮,就能够取消他们的前一次操作,但是在Ajax应用程序中,却无法这样做。不过开发者已想出了种种办法来解决这个问题,HTML5 之前的方法大多是在用户单击后退按钮访问历史记录时,通过建立或使用一个隐藏的IFRAME来重现页面上的变更。(例如,当用户在Google Maps中单击后退时,它在一个隐藏的IFRAME中进行搜索,然后将搜索结果反映到Ajax元素上,以便将应用程序状态恢复到当时的状态)。

关于無法將狀態加入收藏或書籤的問題,HTML5之前的一種方式是使用URL片断标识符(通常被称为锚点,即URL中#后面的部分)来保持追蹤,允许用户回到指定的某个应用程序状态。(许多浏览器允许JavaScript动态更新锚点,这使得Ajax应用程序能够在更新显示内容的同时更新锚点。)HTML5 以後可以直接操作瀏覽歷史,並以字串形式儲存網頁狀態,將網頁加入網頁收藏夾或書籤時狀態會被隱形地保留。上述兩個方法也可以同時解決無法後退的問題。

进行Ajax开发时,网络延迟——即用户发出请求到服务器发出响应之间的间隔——需要慎重考虑。如果不给予用户明确的回应[4],没有恰当的预读数据[5],或者对XMLHttpRequest的不恰当处理[6],都会使用户感到厌烦[7]。通常的解决方案是,使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容。

兼容性 编辑

JavaScript编程的最大问题来自不同的浏览器对各种技术和标准的支持。

XmlHttpRequest对象在不同浏览器中不同的创建方法,以下是跨瀏覽器的通用方法:

// Provide the XMLHttpRequest class for IE 5.x-6.x: // Other browsers (including IE 7.x-8.x) ignore this // when XMLHttpRequest is predefined var xmlHttp; if (typeof XMLHttpRequest != "undefined") {  xmlHttp = new XMLHttpRequest(); } else if (window.ActiveXObject) {  var aVersions = ["Msxml2.XMLHttp.5.0", "Msxml2.XMLHttp.4.0", "Msxml2.XMLHttp.3.0", "Msxml2.XMLHttp", "Microsoft.XMLHttp"];  for (var i = 0; i < aVersions.length; i++) {  try {  xmlHttp = new ActiveXObject(aVersions[i]);  break;  } catch (e) {}  } } 

AJAX支持的浏览器有:Internet ExplorerChromeFirefoxOperaKonqueror及Mac OS的Safari。但是Opera不支持XSL格式对象,也不支持XSLT[8]

开发挑战及解决方案 编辑

对程序员而言,开发Ajax应用最头痛的问题莫过于以下几点:

  • Ajax在本质上是一个浏览器端的技术,首先面临无可避免的第一个问题即是浏览器的兼容性问题。各家浏览器对于JavaScriptDOMCSS的支持总有部分不太相同或是有Bug,甚至同一浏览器的各个版本间对于JavaScriptDOMCSS的支持也有可能部分不一样。这导致程序员在写Ajax应用时花大部分的时间在调试浏览器的兼容性而非在应用程序本身。因此,目前大部分的Ajax链接库或开发框架大多以js链接库的形式存在,以定义更高阶的JavaScript API、JavaScript对象(模板)、或者JavaScript Widgets来解决此问题。如prototype.js。
  • Ajax技术之主要目的在于局部交换客户端及服务器之间的数据。如同传统之主从架构,无可避免的会有部分的业务逻辑会实现在客户端,或部分在客户端部分在服务器。由于业务逻辑可能分散在客户端及服务器,且以不同之程序语言实现,这导致Ajax应用程序极难维护。如有使用者接口或业务逻辑之更动需求,再加上前一个JavaScript/DOM/CSS之兼容性问题,Ajax应用往往变成程序员的梦魇。针对业务逻辑分散的问题,Ajax开发框架大致可分为两类:
  • 将业务逻辑及表现层放在浏览器,数据层放在服务器:因为所有的程序以JavaScript执行在客户端,只有需要数据时才向服务器要求服务,此法又称为胖客户端(fat client)架构。服务器在此架构下通常仅用于提供及储存数据。此法的好处在于程序员可以充分利用JavaScript搭配业务逻辑来做出特殊的使用者接口,以符合终端使用者的要求。但是问题也不少,主因在第一,JavaScript语言本身之能力可能不足以处理复杂的业务逻辑。第二,JavaScript的执行效能一向不好。第三,JavaScript存取服务器数据,仍需适当的服务器端程序之配合。第四,浏览器兼容性的问题又出现。有些Ajax开发框架如DWR企图以自动生成JavaScript之方式来避免兼容的问题,并开立通道使得JavaScript可以直接叫用服务器端的Java程序来简化数据的存取。但是前述第一及第二两个问题仍然存在,程序员必须费相当的力气才能达到应用程序之规格要求,或可能根本无法达到要求。
  • 将表现层、业务逻辑、及数据层放在服务器,浏览器仅有使用者接口引擎(User Interface engine);此法又称为瘦客户端(thin client)架构,或中心服务器(server-centric)架构。浏览器的使用者接口引擎仅用于反映服务器的表现层以及传达使用者的输入回到服务器的表现层。由浏览器所触发之事件亦送回服务器处理,根据业务逻辑来更新表现层,然后反映回浏览器。因为所有应用程序完全在服务器执行,数据及表现层皆可直接存取,程序员只需使用服务器端相对较成熟之程序语言(如Java语言)即可,不需再学习JavaScript/DOM/CSS,在开发应用程序时相对容易。缺点在于使用者接口引擎以及表现层通常以标准组件的形式存在,如需要特殊组件(使用者接口)时,往往须待原框架之开发者提供,缓不济急。如开源码Ajax开发框架ZK目前支持XUL及XHTML组件,尚无XAML之支持。

Ajax是以异步的方式向服务器提交需求。对服务器而言,其与传统的提交窗体需求并无不同,而且由于是以异步之方式提交,如果同时有多个Ajax需求及窗体提交需求,将无法保证哪一个需求先获得服务器的响应。这会造成应用程序典型的多进程(process)或多线程(thread)的竞争(racing)问题。程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生(如Ajax需求未响应之前,先disable送出按钮),这又不必要的增加了程序员的负担。目前已知有自动处理此问题之开发框架似乎只有ZK[來源請求]

参考文献 编辑

  1. ^ (英文)Ajax:網頁應用程式的新方法 (页面存档备份,存于互联网档案馆)—Jesse James Garrett,最近存取日2007年11月7日
  2. ^ (英文)微軟XML Parser(MSXML)版本列表 (页面存档备份,存于互联网档案馆),最近存取日2007年11月7日
  3. ^ (英文)Web设计10大错误(1999年) (页面存档备份,存于互联网档案馆)—Jakob Nielsen著
  4. ^ (英文)Remote Scripting with AJAX, Part 2 (页面存档备份,存于互联网档案馆
  5. ^ (英文)延遲必死:預讀資料以降低延遲 (页面存档备份,存于互联网档案馆)—JonathanBoutelle.com
  6. ^ (英文)不可靠網路下的非同步要求 (页面存档备份,存于互联网档案馆)—Harry Fuecks著,2005年2月
  7. ^ (英文)小朋友們聽著, AJAX不怎麼酷 (页面存档备份,存于互联网档案馆)—Marcus Baker著,2005年6月3日
  8. ^ (英文)Opera 9支援的網頁規格 Archive.is的存檔,存档日期2012-06-04—XSLT, XPath, and XSL-FO部分論及不支持XSL-FO與XSLT,最近存取日2007年11月7日
  • (英文) Ajax: A new approach to web applications[永久失效連結] --JJ Garrett - 2005年

外部链接 编辑

工具 编辑

  • ASP.NET AJAX Extension(開發階段時代號Atlas)(页面存档备份,存于互联网档案馆),微軟AJAX工具箱。
  • jQuery(页面存档备份,存于互联网档案馆),開源JS框架,寫得更少,做得更多。
  • Dojo工具箱(页面存档备份,存于互联网档案馆),AJAX/DHTML工具箱。
  • ,開放源代碼框架。
  • Buffalo Web Remoting(based on prototype)
  • openrico JS UI component(based on prototype)
  • PHPRPC(页面存档备份,存于互联网档案馆),開放源代碼多語言支持的跨平台的安全的Web遠程過程調用框架,讓Ajax編程更容易。
  • ,簡單AJAX工具箱
  • ,Rich Internet AppLication TOolkit.
  • MochiKit(页面存档备份,存于互联网档案馆)一個自稱AJAX的輕量級js庫,支持Json
  • OpenLaszlo(页面存档备份,存于互联网档案馆)原本專注在Flash作為表現層的Laszlo將方向轉至AJAX。
  • script.aculo.us(页面存档备份,存于互联网档案馆)為Ruby on Rails量身打造的AJAX函式庫,跨平台支援。
  • Rico(页面存档备份,存于互联网档案馆)知名的開源碼的AJAX函式庫,跨平台支援。
  • DWR(页面存档备份,存于互联网档案馆) Web Remoting
  • qooxdoo(页面存档备份,存于互联网档案馆) JS UI component(C/S Style)
  • 完全OOP,帶有線程模擬的ajax RIA框架。
  • GWT(页面存档备份,存于互联网档案馆) Google開源框架。
  • 一個能提供安全資料傳輸的AJAX系統架構。

图书 编辑

  • 《Ajax基础教程》,Foundations Of Ajax中文版,人民邮电出版社图灵公司出版。ISBN 7-115-14481-8
  • 《Ajax实战》,Ajax in Action中文版,人民邮电出版社图灵公司出版。ISBN 7-115-14717-5
  • 《Ajax高级程序设计》(第二版),Professional Ajax,人民邮电出版社图灵公司出版。
  • 《Head First Ajax》O'Reilly出版社
  • 《Ajax實戰手冊》碁峰ISBN 986-181-036-6
  • 《Ajax技術手冊》碁峰ISBN 986-181-019-6

參見 编辑

  • Google Web Toolkit是一個前端使用JavaScript,後端使用Java的AJAX framework,提供WYSIWYG設計介面。
  • jQuery用于简化AJAX开发的Javascript函式庫。
  • Prototype AJAX函式庫。
  • Yahoo! UI Library is a set of utilities and controls, written in JavaScript, for building richly interactive web applications using techniques such as DOM scripting, DHTML and AJAX.
  • Xajax知名的開源碼開發AJAX用PHP函式庫。
  • ZK,开放源代码AJAX/XUL框架,JAVA專用。
  • ASP.NET AJAX,由微軟專為ASP.NET應用程式所開發的AJAX基礎架構。
  • Web 2.0,一种新的互联网概念
  • 推送技术,一种服务端主动通知用户的技术

ajax, ajax, 重定向至此, 关于其他用法, 请见, ajax, 消歧义, 本條目存在以下問題, 請協助改善本條目或在討論頁針對議題發表看法, 此條目可能包含原创研究, 2019年1月20日, 请协助補充参考资料, 添加相关内联标签和删除原创研究内容以改善这篇条目, 详细情况请参见讨论页, 此條目需要补充更多来源, 2019年1月20日, 请协助補充多方面可靠来源以改善这篇条目, 无法查证的内容可能會因為异议提出而被移除, 致使用者, 请搜索一下条目的标题, 来源搜索, 网页, 新闻, 书籍, 学术, 图像. Ajax 重定向至此 关于其他用法 请见 Ajax 消歧义 本條目存在以下問題 請協助改善本條目或在討論頁針對議題發表看法 此條目可能包含原创研究 2019年1月20日 请协助補充参考资料 添加相关内联标签和删除原创研究内容以改善这篇条目 详细情况请参见讨论页 此條目需要补充更多来源 2019年1月20日 请协助補充多方面可靠来源以改善这篇条目 无法查证的内容可能會因為异议提出而被移除 致使用者 请搜索一下条目的标题 来源搜索 AJAX 网页 新闻 书籍 学术 图像 以检查网络上是否存在该主题的更多可靠来源 判定指引 此條目可参照德語維基百科相應條目来扩充 若您熟悉来源语言和主题 请协助参考外语维基百科扩充条目 请勿直接提交机械翻译 也不要翻译不可靠 低品质内容 依版权协议 译文需在编辑摘要注明来源 或于讨论页顶部标记 a href Template Translated page html title Template Translated page Translated page a 标签 AJAX即 Asynchronous JavaScript and XML 非同步的JavaScript與XML技術 指的是一套综合了多項技術的瀏覽器端網頁開發技術 Ajax的概念由傑西 詹姆士 賈瑞特所提出 1 Ajax编程范型Webapp HTML JavaScript DHTML DOM XMLHttpRequest JSON XML XSLT XHTML CSS設計者杰西 詹姆士 贾瑞特发行时间2005年2月18日 18年前 2005 02 18 传统的Web应用允许用户端填写表单 form 当送出表单时就向網頁伺服器发送一个请求 伺服器接收并处理传来的表单 然后送回一个新的网页 但这个做法浪费了许多带宽 因为在前后两个页面中的大部分HTML码往往是相同的 由于每次应用的沟通都需要向伺服器发送请求 应用的回應时间依赖于伺服器的回應时间 这导致了用户界面的回應比本機应用慢得多 与此不同 AJAX应用可以仅向伺服器发送并取回必須的数据 并在客户端采用JavaScript处理来自伺服器的回應 因为在伺服器和浏览器之间交换的数据大量减少 伺服器回應更快了 同时 很多的处理工作可以在发出请求的客户端机器上完成 因此Web伺服器的负荷也减少了 类似于DHTML或LAMP AJAX不是指一种单一的技术 而是有机地利用了一系列相关的技术 虽然其名称包含XML 但实际上数据格式可以由JSON代替以进一步减少数据量 而客户端与服务器也并不需要异步 一些基于AJAX的 派生 合成 式 derivative composite 的技术也正在出现 如AFLAX 目录 1 应用 2 发展史 3 优缺点 4 兼容性 5 开发挑战及解决方案 6 参考文献 7 外部链接 7 1 工具 7 2 图书 8 參見应用 编辑運用XHTML CSS來表達資訊 運用JavaScript操作DOM Document Object Model 来執行動態效果 運用XML和XSLT操作資料 運用XMLHttpRequest或新的Fetch API與網頁伺服器進行非同步資料交換 注意 AJAX與Flash Silverlight和Java Applet等RIA技術是有區分的 发展史 编辑20世纪90年代 几乎所有的网站都由HTML页面实现 服务器处理每一个用户请求都需要重新加载网页 这样的处理方式效率不高 用户的体验是所有页面都会消失 再重新载入 即使只是一部分页面元素改变也要重新载入整个页面 不仅要刷新改变的部分 连没有变化的部分也要刷新 这会加重服务器的负担 这可以用异步加载来解决 1995年 JAVA语言的第一版发布 随之发布的的Java applets JAVA小程序 首次实现了异步加载 浏览器通过运行嵌入网页中的Java applets与服务器交换数据 不必刷新网页 1996年 Internet Explorer将iframe元素加入到HTML 支持局部刷新网页 1998年前后 Outlook Web Access小组写成了允许客户端脚本发送HTTP请求 XMLHTTP 的第一个组件 该组件原属于微软Exchange Server 并且迅速地成为了Internet Explorer 4 0 2 的一部分 部分观察家认为 Outlook Web Access是第一个应用了Ajax技术的成功的商业应用程序 并成为包括Oddpost的网络邮件产品在内的许多产品的领头羊 但是 2005年初 许多事件使得Ajax被大众所接受 Google在它著名的交互应用程序中使用了异步通讯 如Google讨论组 Google地图 Google搜索建议 Gmail等 Ajax这个词由 Ajax A New Approach to Web Applications 一文所创 该文的迅速流传提高了人们使用该项技术的意识 另外 对Mozilla Gecko的支持使得该技术走向成熟 变得更为简单易用 优缺点 编辑使用Ajax的最大优点 就是能在不更新整个页面的前提下维护数据 这使得Web应用程序更为迅捷地回应用户动作 并避免了在网络上发送那些没有改变的信息 Ajax不需要任何浏览器插件 但需要用户允许JavaScript在浏览器上执行 就像DHTML应用程序那样 Ajax应用程序必须在众多不同的浏览器和平台上经过严格的测试 随着Ajax的成熟 一些简化Ajax使用方法的程序库也相继问世 同样 也出现了另一种辅助程序设计的技术 为那些不支持JavaScript的用户提供替代功能 对应用Ajax最主要的批评就是 它可能破坏浏览器的后退與加入收藏書籤功能 3 在动态更新页面的情况下 用户无法回到前一个页面状态 这是因为浏览器仅能记下历史记录中的静态页面 一个被完整读入的页面与一个已经被动态修改过的页面之间的可能差别非常微妙 用户通常都希望单击后退按钮 就能够取消他们的前一次操作 但是在Ajax应用程序中 却无法这样做 不过开发者已想出了种种办法来解决这个问题 HTML5 之前的方法大多是在用户单击后退按钮访问历史记录时 通过建立或使用一个隐藏的IFRAME来重现页面上的变更 例如 当用户在Google Maps中单击后退时 它在一个隐藏的IFRAME中进行搜索 然后将搜索结果反映到Ajax元素上 以便将应用程序状态恢复到当时的状态 关于無法將狀態加入收藏或書籤的問題 HTML5之前的一種方式是使用URL片断标识符 通常被称为锚点 即URL中 后面的部分 来保持追蹤 允许用户回到指定的某个应用程序状态 许多浏览器允许JavaScript动态更新锚点 这使得Ajax应用程序能够在更新显示内容的同时更新锚点 HTML5 以後可以直接操作瀏覽歷史 並以字串形式儲存網頁狀態 將網頁加入網頁收藏夾或書籤時狀態會被隱形地保留 上述兩個方法也可以同時解決無法後退的問題 进行Ajax开发时 网络延迟 即用户发出请求到服务器发出响应之间的间隔 需要慎重考虑 如果不给予用户明确的回应 4 没有恰当的预读数据 5 或者对XMLHttpRequest的不恰当处理 6 都会使用户感到厌烦 7 通常的解决方案是 使用一个可视化的组件来告诉用户系统正在进行后台操作并且正在读取数据和内容 兼容性 编辑JavaScript编程的最大问题来自不同的浏览器对各种技术和标准的支持 XmlHttpRequest对象在不同浏览器中不同的创建方法 以下是跨瀏覽器的通用方法 Provide the XMLHttpRequest class for IE 5 x 6 x Other browsers including IE 7 x 8 x ignore this when XMLHttpRequest is predefined var xmlHttp if typeof XMLHttpRequest undefined xmlHttp new XMLHttpRequest else if window ActiveXObject var aVersions Msxml2 XMLHttp 5 0 Msxml2 XMLHttp 4 0 Msxml2 XMLHttp 3 0 Msxml2 XMLHttp Microsoft XMLHttp for var i 0 i lt aVersions length i try xmlHttp new ActiveXObject aVersions i break catch e AJAX支持的浏览器有 Internet Explorer Chrome Firefox Opera Konqueror及Mac OS的Safari 但是Opera不支持XSL格式对象 也不支持XSLT 8 开发挑战及解决方案 编辑此章節的中立性有争议 加上此模板的編輯者需在討論頁說明此章節中立性有爭議的原因 以便讓各編輯者討論和改善 对程序员而言 开发Ajax应用最头痛的问题莫过于以下几点 Ajax在本质上是一个浏览器端的技术 首先面临无可避免的第一个问题即是浏览器的兼容性问题 各家浏览器对于JavaScript DOM CSS的支持总有部分不太相同或是有Bug 甚至同一浏览器的各个版本间对于JavaScript DOM CSS的支持也有可能部分不一样 这导致程序员在写Ajax应用时花大部分的时间在调试浏览器的兼容性而非在应用程序本身 因此 目前大部分的Ajax链接库或开发框架大多以js链接库的形式存在 以定义更高阶的JavaScript API JavaScript对象 模板 或者JavaScript Widgets来解决此问题 如prototype js Ajax技术之主要目的在于局部交换客户端及服务器之间的数据 如同传统之主从架构 无可避免的会有部分的业务逻辑会实现在客户端 或部分在客户端部分在服务器 由于业务逻辑可能分散在客户端及服务器 且以不同之程序语言实现 这导致Ajax应用程序极难维护 如有使用者接口或业务逻辑之更动需求 再加上前一个JavaScript DOM CSS之兼容性问题 Ajax应用往往变成程序员的梦魇 针对业务逻辑分散的问题 Ajax开发框架大致可分为两类 将业务逻辑及表现层放在浏览器 数据层放在服务器 因为所有的程序以JavaScript执行在客户端 只有需要数据时才向服务器要求服务 此法又称为胖客户端 fat client 架构 服务器在此架构下通常仅用于提供及储存数据 此法的好处在于程序员可以充分利用JavaScript搭配业务逻辑来做出特殊的使用者接口 以符合终端使用者的要求 但是问题也不少 主因在第一 JavaScript语言本身之能力可能不足以处理复杂的业务逻辑 第二 JavaScript的执行效能一向不好 第三 JavaScript存取服务器数据 仍需适当的服务器端程序之配合 第四 浏览器兼容性的问题又出现 有些Ajax开发框架如DWR企图以自动生成JavaScript之方式来避免兼容的问题 并开立通道使得JavaScript可以直接叫用服务器端的Java程序来简化数据的存取 但是前述第一及第二两个问题仍然存在 程序员必须费相当的力气才能达到应用程序之规格要求 或可能根本无法达到要求 将表现层 业务逻辑 及数据层放在服务器 浏览器仅有使用者接口引擎 User Interface engine 此法又称为瘦客户端 thin client 架构 或中心服务器 server centric 架构 浏览器的使用者接口引擎仅用于反映服务器的表现层以及传达使用者的输入回到服务器的表现层 由浏览器所触发之事件亦送回服务器处理 根据业务逻辑来更新表现层 然后反映回浏览器 因为所有应用程序完全在服务器执行 数据及表现层皆可直接存取 程序员只需使用服务器端相对较成熟之程序语言 如Java语言 即可 不需再学习JavaScript DOM CSS 在开发应用程序时相对容易 缺点在于使用者接口引擎以及表现层通常以标准组件的形式存在 如需要特殊组件 使用者接口 时 往往须待原框架之开发者提供 缓不济急 如开源码Ajax开发框架ZK目前支持XUL及XHTML组件 尚无XAML之支持 Ajax是以异步的方式向服务器提交需求 对服务器而言 其与传统的提交窗体需求并无不同 而且由于是以异步之方式提交 如果同时有多个Ajax需求及窗体提交需求 将无法保证哪一个需求先获得服务器的响应 这会造成应用程序典型的多进程 process 或多线程 thread 的竞争 racing 问题 程序员因此必须自行处理或在JavaScript里面动手脚以避免这类竞争问题的发生 如Ajax需求未响应之前 先disable送出按钮 这又不必要的增加了程序员的负担 目前已知有自动处理此问题之开发框架似乎只有ZK 來源請求 参考文献 编辑 英文 Ajax 網頁應用程式的新方法 页面存档备份 存于互联网档案馆 Jesse James Garrett 最近存取日2007年11月7日 英文 微軟XML Parser MSXML 版本列表 页面存档备份 存于互联网档案馆 最近存取日2007年11月7日 英文 Web设计10大错误 1999年 页面存档备份 存于互联网档案馆 Jakob Nielsen著 英文 Remote Scripting with AJAX Part 2 页面存档备份 存于互联网档案馆 英文 延遲必死 預讀資料以降低延遲 页面存档备份 存于互联网档案馆 JonathanBoutelle com 英文 不可靠網路下的非同步要求 页面存档备份 存于互联网档案馆 Harry Fuecks著 2005年2月 英文 小朋友們聽著 AJAX不怎麼酷 页面存档备份 存于互联网档案馆 Marcus Baker著 2005年6月3日 英文 Opera 9支援的網頁規格 Archive is的存檔 存档日期2012 06 04 XSLT XPath and XSL FO部分論及不支持XSL FO與XSLT 最近存取日2007年11月7日 英文 Ajax A new approach to web applications 永久失效連結 JJ Garrett 2005年外部链接 编辑工具 编辑 ASP NET AJAX Extension 開發階段時代號Atlas 页面存档备份 存于互联网档案馆 微軟AJAX工具箱 jQuery 页面存档备份 存于互联网档案馆 開源JS框架 寫得更少 做得更多 Dojo工具箱 页面存档备份 存于互联网档案馆 AJAX DHTML工具箱 Prototype 開放源代碼框架 Buffalo Web Remoting based on prototype openrico JS UI component based on prototype PHPRPC 页面存档备份 存于互联网档案馆 開放源代碼多語言支持的跨平台的安全的Web遠程過程調用框架 讓Ajax編程更容易 Sajax 簡單AJAX工具箱 Rialto Rich Internet AppLication TOolkit MochiKit 页面存档备份 存于互联网档案馆 一個自稱AJAX的輕量級js庫 支持Json OpenLaszlo 页面存档备份 存于互联网档案馆 原本專注在Flash作為表現層的Laszlo將方向轉至AJAX script aculo us 页面存档备份 存于互联网档案馆 為Ruby on Rails量身打造的AJAX函式庫 跨平台支援 Rico 页面存档备份 存于互联网档案馆 知名的開源碼的AJAX函式庫 跨平台支援 DWR 页面存档备份 存于互联网档案馆 Web Remoting qooxdoo 页面存档备份 存于互联网档案馆 JS UI component C S Style jsLINB完全OOP 帶有線程模擬的ajax RIA框架 GWT 页面存档备份 存于互联网档案馆 Google開源框架 Quicknet一個能提供安全資料傳輸的AJAX系統架構 图书 编辑 Ajax基础教程 Foundations Of Ajax中文版 人民邮电出版社图灵公司出版 ISBN 7 115 14481 8 Ajax实战 Ajax in Action中文版 人民邮电出版社图灵公司出版 ISBN 7 115 14717 5 Ajax高级程序设计 第二版 Professional Ajax 人民邮电出版社图灵公司出版 Head First Ajax O Reilly出版社 Ajax實戰手冊 碁峰ISBN 986 181 036 6 Ajax技術手冊 碁峰ISBN 986 181 019 6參見 编辑 nbsp 互联网主题 Google Web Toolkit是一個前端使用JavaScript 後端使用Java的AJAX framework 提供WYSIWYG設計介面 jQuery用于简化AJAX开发的Javascript函式庫 Prototype AJAX函式庫 Yahoo UI Library is a set of utilities and controls written in JavaScript for building richly interactive web applications using techniques such as DOM scripting DHTML and AJAX Xajax知名的開源碼開發AJAX用PHP函式庫 ZK 开放源代码AJAX XUL框架 JAVA專用 ASP NET AJAX 由微軟專為ASP NET應用程式所開發的AJAX基礎架構 Web 2 0 一种新的互联网概念 推送技术 一种服务端主动通知用户的技术 取自 https zh wikipedia org w index php title AJAX amp oldid 78948525, 维基百科,wiki,书籍,书籍,图书馆,

文章

,阅读,下载,免费,免费下载,mp3,视频,mp4,3gp, jpg,jpeg,gif,png,图片,音乐,歌曲,电影,书籍,游戏,游戏。