Python 发表于 2015-9-26 00:04:26

AJAX - Asynchronous JavaScript and XML 异步 JavaScript 和 XML

AJAX - Asynchronous JavaScript and XML 异步 JavaScript 和 XML
AJAX 是 Asynchronous JavaScript And XML 的缩写,中文译为异步 JavaScript 和 XML。
AJAX 是创建快速交互动态网页应用的 Web 开发技术。使用 Ajax 的网页能快速将增量更新呈现到用户界面,无需要重载 (刷新) 整个页面,能够更快地响应用户操作。
AJAX 是 2005 年由 Jesse James Garrett 提出的新术语,用来描述使用现有技术集合的一种新方法,包括: HTML 或 XHTM、CSS, JavaScript, DOM, XML, XSLT, 及最重要的 XMLHttpRequest。
AJAX 不是新的编程语言,仅是使用现有标准的一种新方法。AJAX 是与服务器交换数据并更新部分网页 (或局部) 的技术,在不重新加载整个页面的情况下。
AJAX 是独立于 Web 服务器软件的一种浏览器技术,AJAX 应用程序独立于浏览器和平台。AJAX 可使因特网应用程序变得更小、更快,更友好。
智能编辑重构 批处理式 "数字 Python IDE" 集成开发环境 (集成高效 Cython PyInstaller 批处理小程序)
http://dt.digitser.cn/zh-CN/ide/idepy/index.html
Ajax 的核心是 JavaScript 对象 XmlHttpRequest,在 Internet Explorer 5 中首次引入,是支持异步请求的一种技术。简而言之,XmlHttpRequest 可以采用 JavaScript 向服务器提出请求并处理响应,且不阻塞用户。

这个术语源自描述从基于 Web 的应用到基于数据的应用的转换。在基于数据的应用中,用户要求的数据 (如联系人列表),可从独立于实际网页的服务端取得并被动态地写入网页中,给缓慢的 Web 应用体验着色,使之像桌面应用一样。
AJAX 在浏览器和 Web 服务器之间使用异步数据传输 (HTTP 请求),这样可使网页从服务器请求少量信息,而不是整个页面。通过在后台和服务器之间的少量数据交换,AJAX 就能使网页实现异步更新。这意味着可以在不重新加载整个网页的情况下,对网页的某部分进行更新。传统网页 (不使用 AJAX) 若需更新内容,必须重载整个页面。
Web 应用程序较桌面应用程序有诸多优势:它能涉及广大用户、更易安装维护、更易开发。但因特网应用程序并不像传统桌面应用程序那样完善且友好, AJAX 技术能使因特网应用程序可变得更完善,友好。


应用历史
AJAX 技术在 1998 年前后得到应用。允许客户端脚本发送 HTTP 请求 (XMLHTTP) 的第一个组件由 Outlook Web Access 小组写成。
该组件属于微软 Exchange Server,并迅速成了 Internet Explorer 4.0 的一部分。某些观察家认为,Outlook Web Access 是第一个应用 Ajax 技术的成功商业应用程序,并成为包括 Oddpost 的网络邮件产品在内的许多产品的领头羊。
2005年初,许多事件使 Ajax 技术被大众所接受。Google 在它著名的交互应用程序中使用了异步通讯,如:Google、Google 地图、Google 搜索建议、Gmail 等。Ajax 这个词由《Ajax: A New Approach to Web Applications》一文所创,该文的迅速流传提高了人们使用 Ajax 技术的意识。另外,对 Mozilla/Gecko 的支持也使得该技术走向成熟,变得极为易用。
AJAX 前景非常乐观,可提高系统性能,优化用户界面。AJAX 现有直接框架 AjaxPro,可以引入 AjaxPro.2.dll 文件,可直接在前台页面采用 JS 调用后台页面。但此框架与 FORM 验证有冲突。另外,微软也引入了 AJAX 组件,需要添加 AjaxControlToolkit.dll 文件,可以在控件列表中出现相关控件。
开发模式
许多重要技术和 AJAX 开发模式,可以从现有知识中获取。譬如:在一个发送请求到服务端的应用中,必须包含请求顺序、优先级、超时响应、错误处理及回调,其中许多元素已包含在 Web 服务中。同时,随着技术的成熟还有许多地方需要改进,特别是 UI 部分的易用性。
AJAX 开发与传统 C/S 开发有很大不同。这些不同引入了新的编程问题,最大的问题在于易用性。
由于 AJAX 依赖浏览器的 JavaScript 和 XML,浏览器的兼容性和支持的标准也变得和 JavaScript 运行时性能一样重要。这些问题中的大部分源于浏览器、服务器和技术的组合,因此,必须理解后才能最大限度的使用 AJAX 技术。
综合各种变化的技术和强耦合的客户服务端环境,AJAX 提出了一种新的开发方式。
AJAX 开发人员必须理解传统的 MVC 架构,这限制了应用层次之间的边界。同时,开发人员还需要考虑 C/S 外部环境和使用 AJAX 技术来重定型 MVC 边界。最重要的是,AJAX 开发人员必须禁止以页面集合的方式来考虑 Web 应用,需要将其认为是单个页面。一旦 UI 设计与服务架构之间的范围被严格区分开来后,开发人员就需要更新和改变技术集。
随着 AJAX 迅速引人注意,开发人员对这种技术的期待也在迅速增加。就像任何新技术,AJAX 的兴旺也需要开发工具/编程语言及相关技术系统的支撑。
技术缺陷
AJAX 不需要任何浏览器插件,但需要用户允许 JavaScript 在浏览器上执行。
进行 Ajax 开发时,需要慎重考虑网络延迟 (即:用户发出请求到服务器发出响应之间的间隔)。若不给予用户明确回应,不进行恰当的数据预读,或对 XMLHttpRequest 的处理不恰当,都会使用户感到厌烦。解决方案:采用可视化组件来告诉用户系统正在进行后台操作且正在读取数据和内容。
对应用了 AJAX 技术的最主要批评:它破坏了浏览器后退、加入收藏书签的功能。在动态更新页面的情况下,用户无法回到前一页面状态,这是因为浏览器仅能记下历史记录中的静态页面。一个被完整读入的页面与一个已被动态修改过的页面之间的可能差别非常微妙;用户通常希望单击后退按钮,就能取消前一操作,但在 AJAX 应用程序中,却无法这样做。
开发者已想出各种办法来解决此问题,HTML5 之前大多是在用户单击后退按钮访问历史记录时,通过创建或使用隐藏的 IFRAME 来重现页面上的变更。如当用户在 Google Maps 中单击后退时,它在一个隐藏的 IFRAME 中进行搜索,然后将搜索结果反映到 AJAX 元素上,以便将应用程序状态恢复到当时的状态。

关于无法将状态加入收藏书签的问题,HTML5 之前的另一种方式是使用 URL 片断标识符 (通常锚点,即 URL 中 # 后面的部分) 来保持追踪,允许用户回到指定的某个应用程序状态。许多浏览器允许 JavaScript 动态更新锚点,这使得 AJAX 应用程序能够在更新显示内容的同时更新锚点。HTML5 以后可以直接操作浏览历史,并以字符串形式存储网页状态,将网页加入网页收藏夹书签时状态会被隐式保留。http://forum.digitser.cn/data/attachment/forum/201605/19/132155fevczeyds5e5y1wy.jpg扫一扫关注 德云社区 微信公众号
版权声明:
本文为独家原创稿件,版权归 德云社区,未经许可不得转载。

页: [1]
查看完整版本: AJAX - Asynchronous JavaScript and XML 异步 JavaScript 和 XML