为什么称为XMLHttpRequest?

时间:2012-08-22 06:07:01

标签: javascript ajax xmlhttprequest

我总是想知道为什么会这样调用这个对象?

您的请求正文不需要采用XML格式。此外,从服务器接收的数据可以作为JSON,XML,HTML或纯文本提取。 XML在此对象中不起重要作用。这有点陈词滥调吗?这个对象在第一次创建时曾经是什么?

3 个答案:

答案 0 :(得分:45)

XMLHttpRequest是由Microsoft的Outlook Web Access团队发明的。这个高度创新的团队之前为我们提供了远程脚本,这是“AJAX”风格开发的开始。远程脚本就像JSONP,但过于复杂(它使用了Java applet,所有东西)。我不记得是否有可能在IE 4或5中动态注入<script>元素,但似乎这是不可能的。否则,JSONP似乎足以消除对XMLHttpRequest的需求。

Outlook团队正在将XML从服务器传输到客户端,因此ActiveX控件被命名为反映其当时的主要用途。它作为MSXML解析器的一部分包含在内。

当Firefox加入游戏并实现自己的版本时,XMLHttpRequest的使用情况与今天的情况相似,而对于XML则更少,但Firefox无论如何都使用相同的名称。由于两家最大的浏览器制造商创建了具有相同名称,界面和功能的对象,因此w3c坚持使用现有名称。太糟糕了,有些人没有对这个用词不当做出更多的臭味,并且坚持认为我们称之为更加准确,就像HttpRequest一样。

我不知道为什么或为什么“AJAX”成为描述网页与服务器交互而不需要完整页面加载的编程风格的流行术语。 “AJAX”比“XMLHttpRequest”更糟糕,因为它不仅暗示XML是一个重要方面,而且还没有提供服务器交互的指示。我可以异步处理XML,而无需与服务器通信。

答案 1 :(得分:24)

是的,名称中的XML部分都是错误的。

最好的解释来自发明XHR的MS工程师:

  

这是关键功能被挤满的好时光   发布前几天......我意识到MSXML库附带了   IE和我在XML团队中有一些很好的联系   可能有所帮助 - 我与正在运行的Jean Paoli取得了联系   当时的团队,我们很快达成协议,运送东西   作为MSXML库的一部分。哪个是真正的解释   XMLHTTP这个名字的来源 - 主要是关于HTTP而不是   除了那个最简单的借口之外,与XML有任何特定的联系   因为我需要将XML填入名称。

- Alex Hopmann The story of XMLHTTP

这清楚地表明,寻求与XML的关联,无论它们多么合理,基本上都是对作者的过度解读。意图。
对不起,破坏了乐趣。

答案 2 :(得分:8)

AJAX代表异步Javascript和XML。最初,所有通信都使用XML(HTML也类似XML,XHTML是XML)。 JSON后来出现了。所以这是出于历史原因。 (另请查看此wiki page