Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ajax 和 xhr 是什么关系?【热度: 332】 #809

Open
yanlele opened this issue Aug 10, 2024 · 0 comments
Open

ajax 和 xhr 是什么关系?【热度: 332】 #809

yanlele opened this issue Aug 10, 2024 · 0 comments
Labels
TOP100互联网 公司标签 网络 web 网络相关
Milestone

Comments

@yanlele
Copy link
Member

yanlele commented Aug 10, 2024

关键词:ajax 和 xhr

Ajax

全称为 Asynchronous JavaScript and XML(异步 JavaScript 和 XML),是一种在不重新加载整个网页的情况下,与服务器进行数据交换并更新部分网页内容的技术方法。

Ajax 主要基于以下几个关键概念和技术:

  1. 异步通信:允许网页在发送请求后继续执行其他操作,无需等待服务器响应。

  2. JavaScript:用于处理请求的发送、响应的接收和页面的动态更新。

  3. XML 或其他数据格式:虽然名称中包含 XML,但实际上服务器返回的数据可以是 XML、JSON、HTML 等各种格式。

关系

Ajax(Asynchronous JavaScript and XML)是一种使用多种技术(包括 XMLHttpRequest(XHR)对象)在后台与服务器进行异步数据交换,而无需重新加载整个网页的 Web 开发技术。

XMLHttpRequest 是实现 Ajax 技术的关键对象之一。通过创建 XMLHttpRequest 对象,我们可以使用 JavaScript 向服务器发送请求,并处理服务器返回的响应。

简单来说,XMLHttpRequest 是实现 Ajax 的一种底层机制或工具。Ajax 是一个更广泛的概念,涵盖了使用包括 XMLHttpRequest 在内的技术来实现异步数据交互的方法和模式。

例如,以下是一个使用 XMLHttpRequest 实现简单 Ajax 请求的示例:

let xhr = new XMLHttpRequest();

xhr.open("GET", "https://example.com/data");

xhr.onreadystatechange = function () {
  if (xhr.readyState === 4 && xhr.status === 200) {
    let data = xhr.responseText;

    console.log(data);
  }
};

xhr.send();

在这个示例中,我们通过操作 XMLHttpRequest 对象来完成了一个异步获取数据的过程,这就是 Ajax 技术的一种应用。

其他实现方式

除了使用 XMLHttpRequest 实现 Ajax 之外,还有以下几种常见的实现方式:

  1. fetch API:这是现代浏览器中提供的一种更简洁的异步请求方式,基于 Promise
fetch("https://example.com/data")
  .then((response) => response.json())

  .then((data) => console.log(data))

  .catch((error) => console.error(error));
  1. Axios 库:一个流行的第三方 Ajax 库,提供了丰富的功能和简洁的接口。
axios
  .get("https://example.com/data")

  .then((response) => console.log(response.data))

  .catch((error) => console.error(error));
  1. jQuery$.ajax() 方法:如果项目中使用了 jQuery 库,可以使用其提供的 ajax 方法。
$.ajax({
  url: "https://example.com/data",

  method: "GET",

  success: function (data) {
    console.log(data);
  },

  error: function (error) {
    console.error(error);
  },
});

这些方式各有特点,可以根据项目的需求和技术架构选择合适的 Ajax 实现方式。

@yanlele yanlele added TOP100互联网 公司标签 网络 web 网络相关 labels Aug 10, 2024
@yanlele yanlele added this to the milestone Aug 10, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
TOP100互联网 公司标签 网络 web 网络相关
Projects
None yet
Development

No branches or pull requests

1 participant