66

我一直想知道为什么这个对象被这样称呼?

您的请求正文不必采用 XML 格式。此外,从服务器接收的数据可以以 JSON、XML、HTML 或纯文本的形式获取。XML 在这个对象中并不重要。这是某种陈词滥调吗?这个对象最初创建时是什么?

4

3 回答 3

60

XMLHttpRequest由 Microsoft 的 Outlook Web Access 团队发明。这个高度创新的团队之前给了我们远程脚本,这是“AJAX”风格开发的开始。远程脚本类似于 JSONP,但过于复杂(它使用 Java 小程序,最重要的是)。我不记得是否可以<script>在 IE 4 或 5 中动态注入元素,但这似乎是不可能的。否则,JSONP 似乎足够强大,可以消除对XMLHttpRequest.

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

到 Firefox 进入游戏并实现他们自己的版本时,XMLHttpRequest它的使用更像今天,而用于 XML 的则更少,但 Firefox 还是使用了相同的名称。由于两家最大的浏览器制造商创建了一个具有相同名称、界面和功能的对象,w3c 坚持使用现有名称。太糟糕了,有人没有对这个误称产生更多的恶臭,并坚持我们称之为更准确的东西,比如HttpRequest.

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

于 2012-08-22T06:57:27.460 回答
33

短的

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

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

这是过去几天,关键特性在发布前几天就被塞满了……我意识到 MSXML 库是随 IE 一起提供的,我在 XML 团队中有一些很好的联系人,他们可能会提供帮助——我取得了联系与当时管理该团队的 Jean Paoli 合作,我们很快达成了一项协议,将这个东西作为 MSXML 库的一部分提供。这才是 XMLHTTP 这个名字的由来的真正解释——它主要是关于 HTTP 的,并且与 XML 没有任何特定的联系,除了这是发布它的最简单的借口,所以我需要把 XML 塞进这个名字。

-- Alex Hopmann XMLHTTP 的故事

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

于 2016-01-05T08:04:22.313 回答
8

AJAX 代表异步 Javascript 和 XML。开始时所有的通信都是使用 XML(HTML 也类似于 XML,而 XHTML 是 XML)。JSON 是后来出现的。所以这是出于历史原因。(也看看这个维基页面

于 2012-08-22T06:13:13.393 回答