什么是Ajax请求?它与Servlet请求有何不同?

39
有人能告诉我,Ajax请求到底是什么?它和Servlet请求有什么不同吗?

1
应该查看维基百科的文章。http://en.wikipedia.org/wiki/Ajax_%28programming%29 - rahul
请求头应包含此键值对:x-requested-with : xmlHttpRequest - Armin Torkashvand
6个回答

84

一个Ajax调用是由浏览器发起的异步请求,不会直接导致页面跳转。Servlet请求是Java特定术语(servlet是Java规范),用于服务HTTP请求,可能是简单的GET或POST(等等)请求,也可能是Ajax请求。

Ajax(“异步JavaScript和XML”)请求有时被称为XHR请求(“XmlHttpRequest”),这是大多数浏览器给发送Ajax请求使用的对象的名称,因为最初的Ajax调用涉及发送和接收XML数据,但现在发送/接收JSON、纯文本或HTML同样普遍。

StackOverflow上的评论系统是Ajax请求的一个很好的例子。您可以在文本框中输入评论并单击提交按钮。它不会提交整个页面(像传统的HTML表单提交那样,通常会转换为POST请求,但有时也是GET HTTP请求)。相反,浏览器将通过XHR发送可能是POST请求到服务器,并在收到响应后得到通知(因此是“异步”的)。但是服务器通常无法区分Ajax请求和页面跳转,因为两者都只是HTTP请求。


1
好的例子和解释! - Kaushal28
4
但服务器通常无法区分Ajax请求或页面转换 - 大多数Ajax请求都会使用头部X-Requested-With: XMLHttpRequest发送,因此服务器可以根据该头部做出假设,即它是一个Ajax请求。 - BornToCode

11

Ajax,即异步 JavaScript 和 XML,是一种用客户端脚本与 Web 服务器交换数据的 Web 应用程序开发方法。因此,在不中断交互流程的情况下动态更新网页。

使用 Ajax 可以创建更丰富、更动态的 Web 应用程序用户界面(即客户端)。而 Servlet 请求在服务器端处理从 UI 发送的请求。

当访问者请求页面时,服务器会一次性发送完整的 HTML 和 CSS 代码。当访问者填写表单并提交后,服务器会处理信息(Servlet 请求对象向 servlet 提供客户端请求信息。Servlet 容器创建一个 ServletRequest 对象,并将其作为参数传递给 servlet 的服务方法),并重建页面。然后将完整页面发送回客户端。如此往复。

使用 AJAX 时,页面仅在第一次请求时完全加载。除了组成页面的 HTML 和 CSS 代码外,还下载了一些 JavaScript 文件:AJAX 引擎。所有对服务器的数据请求都将作为 JavaScript 调用发送到该引擎。AJAX 引擎异步地从 Web 服务器请求信息(servlet 请求对象包含请求参数,这些参数已经发生了变化)。因此,只有当用户需要时才请求和发送小页面块。引擎然后在不重新加载整个页面的情况下显示信息。这导致接口响应更快,因为只有必要的信息在客户端和服务器之间传递,而不是整个页面。

有关 AJAX 实现的更多信息,请参考 http://www.ibm.com/developerworks/library/j-ajax1/


6
问题在于,像IT领域中使用的许多术语一样,"AJAX请求"或"Servlet请求"都没有明确的定义。我能想到的最好的解释如下:
- AJAX是"Asynchronous Javascript and XML"的缩写,但现在这个术语已经延伸到包括JSON或YAML以及XML。关键思想是嵌入在网页中的逻辑(在Javascript中)会异步地向“主页”服务器发出HTTP请求以请求更多信息,而不是触发整个网页的刷新。 - AJAX请求是由AJAX应用程序发出的请求。通常,它是由(浏览器内置的)Javascript发出的HTTP请求,该请求使用XML来编码请求数据和/或响应数据。在Javascript中进行AJAX请求的标准方法是使用XmlHttpRequest对象,但这是一种实现细节...并非AJAX定义的基本要素。 - Servlet请求是发送到Servlet的请求。理论上,它甚至不需要是HTTP请求,因为Servlet技术(理论上)设计为也可以在其他协议上工作。在我看来,这不是一个特别有用的术语。
因此...... AJAX请求可以是Servlet请求,也可以不是;Servlet请求可以是AJAX请求,也可以不是。
值得指出的是,Java接口中有一个名为ServletRequest的接口,它是J2EE API的一部分。该接口是用于在基于J2EE的Web应用程序容器中传递Web请求详细信息的对象类型。因此,当您看到有人使用术语"Servlet请求"时,他们实际上可能正在谈论一个ServletRequest实例。
1-实际上,这与任何其他自然语言没有区别。单词和短语的含义取决于人们如何使用它们,而不是基于字典中找到的任何定义。字典的“定义”往往在单词或短语进入常见用法的几年或几十年后出现,并且它根据单词的使用方式(或曾经使用的方式)给出了一种含义,而不是规范的含义。

4

Ajax不是一种编程语言或工具,而是一个概念。它是一种客户端脚本,可以在无需回发或完全刷新页面的情况下与服务器/数据库进行通信。


0

客户端使用JavaScript发出AJAX请求,而服务器使用Java发出Servlet请求。

我建议您在维基百科或其他地方查找相关信息。


0

Ajax请求是对Web服务器的调用。如何处理它完全取决于您。 Servlet绝对是一种方式。


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