Web 技术研究所

我一直坚信着,Web 将会成为未来应用程序的主流

Ajax到底是什么?

  本来是想写一篇关于Ajax的文章的,但是越来越觉得不对劲。Ajax到底是什么?我对此产生了疑惑。维基百科对Ajax的解释都是“Asynchronous JavaScript and XML”的缩写。但是如果真是这样就很奇怪了。
  Ajax被提出的年代还不是太久远,我们可以在网络上找到最初关于Ajax的文章。这篇文章确实有提到“Asynchronous JavaScript and XML”,但是它不是缩写(acronym),而是助记符(shorthand)。这区别可大了,说是缩写完全就本末倒置了。缩写是从一个很长的词组中取出首字母创造一个新词。而助记符是先创造一个新的词,为了让别人更容易的记住这个词而引入一个句子,让首字母和新词的首字母对应上来加深记忆。这是本质上的区别,缩写的单词我们可以从全称中得知它们的含义。而助记符的含义就未必和新词完全一致。比如“Family”这个单词的助记符号可以是“father and mother i love you”,我们无法从这个句子得到单词本身的含义。“Asynchronous JavaScript and XML”是“Ajax”这个单词的助记符,所以它不能代表“Ajax”的含义。另外,原文中从头到尾使用的是“Ajax”而不是“AJAX”,这就更充分的证明了“Ajax”不是一个缩写。
  那么Ajax是什么?在上面链接的文中说Ajax不是一种技术,而是许多技术的融合。然后给出了几个包含的技术,这些句子我翻译了就变味了,还是按原文来理解吧
standards-based presentation using XHTML and CSS;
dynamic display and interaction using the Document Object Model;
data interchange and manipulation using XML and XSLT;
asynchronous data retrieval using XMLHttpRequest;
and JavaScript binding everything together.
  这就是初的定义,但是最初的定义和现在的Ajax显然不是一回事。这就要从Ajax的提出者“Jesse James Garrett”身上来分析。当时他是一位用户体验设计师(user experience designer),注意是设计师不是程序员。作为一个设计师,对Ajax做这样的定义当然非常合理。但是它只是提出了这个概念,之后的发展导向就变成了前端的程序员。因此最初定义的概念也在程序员或者称为开发者的手中潜移默化的改变着。比起“异步”,程序员更关心“通信”本身。现在的一些大型框架对Ajax的封装中就可以看出,无论它是同步还是异步、方法是POST还是GET、获取的数据是Text还是XML,甚至有些跨域操作比如JSONP使用非XHR方式从服务器获取数据也被定义为Ajax。这些东西和最初的定义显然是风牛马不相及。
  现在,就目前的Web现状而言,我对Ajax的定义广义上是客户端脚本通过应用层协议与服务器通信的技术,狭义上是使用XHR对象和服务器通信的技术。也许哪一天W3C会作出一个艰难的决定,把Ajax设立一个标准也不一定。总之目前没有官方标准的情况下,对Ajax的理解应该根据几个知名的大型框架对它的封装来理解。
网名:
34.203.213.*
电子邮箱:
仅用于接收通知
提交 悄悄的告诉你,Ctrl+Enter 可以提交哦
神奇海螺
[查看全部主题]
各类Web技术问题讨论区
发起新主题
本模块采用即时聊天邮件通知的模式
让钛合金F5成为历史吧!
次碳酸钴的技术博客,文章原创,转载请保留原文链接 ^_^