什么是 AJAX?

5
我知道AJAX代表什么。我对JavaScript有一定的了解。但是,坦白地说,我不清楚AJAX是什么。
因为我只知道它涉及到XMLHttpRequest(),但它肯定不止于此。有人能否更清楚地解释一下AJAX不仅仅是普通JavaScript的某个方面?我看不出它有什么不同。
编辑:我也知道它允许您在不重新加载页面的情况下更新页面。那很棒,我知道。但我仍然看不出它有什么不同于标准JavaScript。

AJAX是由JavaScript程序发起的HTTP请求。没有更多,也没有更少... - Šime Vidas
1
勇敢的人啊,他们尝试回答这个问题。每一个“正确”的答案都会有人给你踩下来,因为他们对 AJAX 的解释可能略有不同。可以说你没有错过任何神奇的东西,这个首字母缩略词通常只是指 JavaScript 的特定用例。 - Amardeep AC9MF
1
一个使用模式,而不是用例。确实有一个正确答案。 - Cheeso
5个回答

5

这并不像是什么 魔法,它实际上就是普通的Javascript,以及普通的XML(或JSON,或其他数据格式)。而且它在浏览器中运行。所有这些都并不是特别新颖或独特的。微软在1996年就开始谈论“DHTML”,并于1997年正式发布了它。

但是,将这些现有的东西结合起来,是一种足够常见和有用的方法,已经获得了一个特定的名字。AJAX指的是使用异步请求模式,在浏览器中运行的Javascript逻辑驱动下,检索XML格式或其他格式的数据。通常,检索到的数据会以某种方式用于更新HTML页面,而不会导致完整的页面刷新。

你说你不明白这与标准JavaScript有什么区别。使用浏览器中的Javascript,你可以做一些简单的事情,比如运行计时器,在到期后弹出提示框,或者对背景颜色执行淡出效果。或者像手风琴一样使用jQuery效果。或者根据不同列动态排序HTML表格。甚至可以使用Javascript实现文本框中的自动完成。这些都会导致UI被更新,但不一定会检索任何数据。(在某些情况下,自动完成会这样做,但通常不会)。

AJAX始终涉及通信和数据检索,因此它与“标准Javascript”有所区别。


3

我认为要理解XMLHttpRequest的来历,你需要研究一下它是从哪里来的。在当时,它不是JavaScript的标准组成部分。你不能使用纯JavaScript从浏览器发出异步HTTP请求。XMLHttpRequest对象最初是由Microsoft在IE5中作为ActiveX控件首次引入的。所以考虑到这一点,我们今天使用JavaScript的方式已经从一个更简单的情境演变而来。

我建议你阅读维基百科页面-特别是历史部分。Ajax没有什么显著的奇妙之处,它只是一个被杜撰出来的术语,用于描述当时的一种新方法,并且一直沿用至今。

http://en.wikipedia.org/wiki/AJAX

特别是阅读权威文章http://www.adaptivepath.com/ideas/ajax-new-approach-web-applications - 这可能是了解Ajax的最佳方式,以及它实际上意味着什么。 最重要的是:

定义Ajax

Ajax不是一种技术。它实际上是几种技术,每个技术都在其自己的领域中蓬勃发展,并以强大的新方式相互结合。 Ajax包括:

  • 使用XHTML和CSS的基于标准的呈现;
  • 使用文档对象模型进行动态显示和交互;
  • 使用XML和XSLT进行数据交换和操作;
  • 使用XMLHttpRequest进行异步数据检索;
  • 以及JavaScript将所有内容绑定在一起。

如前所述,现在很难明确定义Ajax。随着浏览器的演变,这些方法很容易更新自己,但这些原则是其概念的基础。


0
"Asynchronous Javascript and XML" -- 你说得对,它实际上只是Javascript的一个组件。从服务器端来看,它实际上什么都不是:服务器不知道也不关心它是否在处理AJAX请求或“正常”请求(尽管当然Web应用程序会知道并关心)。它之所以出名并拥有一个花哨的缩写,是因为它在设计网站时非常有用。
编辑:W3规范http://www.w3.org/TR/XMLHttpRequest/中的定义:
XMLHttpRequest规范定义了一个API,为客户端和服务器之间的数据传输提供了脚本化的客户端功能。

1
这并不完全正确,如果浏览器设置了 xmlhttprequest 标头,服务器就知道它是一个 AJAX 请求。此外,有时服务器确实关心它是否是 AJAX 请求。 - Francisc
3
从技术上讲,AJAX 不是 JavaScript 的组成部分,因为这门语言本身并没有定义它。AJAX 是浏览器对象模型的一个组成部分。 - Šime Vidas
xhr2 真的是 BOM 的子集吗? - Raynos

-1

AJAX是一种异步获取和发送数据到服务器的方式,而无需刷新页面。以前交换的数据只能是XML(AJAX中的“X”),现在可以是其他格式(例如JSON或甚至JSONP)。


-1

JavaScript 发生在客户端。Ajax 使用 JavaScript 从服务器接收远程响应而无需加载页面。


JavaScript 也可以在服务器端“发生”。 - Francisc
你也可以向服务器发送请求,而不仅仅是接收。 - Francisc
我想你的意思是不用重新加载页面。 - awiebe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接