【JavaScript】使用 XMLHttpRequest 和 Fetch API


在前端开发中, 与服务器进行数据交互是不可避免的需求,而 JavaScript 提供了多种方式来实现 HTTP 请求。本篇博客将介绍两种常见的 HTTP 请求方式:XMLHttpRequest 和 Fetch API,以便更好地理解它们的使用场景和特点。

1. XMLHttpRequest

发送GET请求

let xhr = new XMLHttpRequest();
xhr.open("GET", "https://api.example.com/data", true);
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4 && xhr.status === 200) {
    console.log("Response:", xhr.responseText);
  }
};
xhr.send();

在上述例子中,通过创建 XMLHttpRequest 对象,使用 open 方法配置请求方法、URL 和是否异步。然后通过 onreadystatechange 监听状态变化,当状态为 4(表示完成)且状态码为 200 时,表示请求成功,可以获取响应数据。

发送POST请求

let xhr = new XMLHttpRequest();
xhr.open("POST", "https://api.example.com/post", true);
xhr.setRequestHeader("Content-Type", "application/json");
xhr.onreadystatechange = function() {
  if (xhr.readyState === 4 && xhr.status === 200) {
    console.log("Response:", xhr.responseText);
  }
};
let postData = { key: "value" };
xhr.send(JSON.stringify(postData));

在上述例子中,通过将请求方法改为 POST,并使用 setRequestHeader 设置请求头,然后通过 send 方法发送 JSON 格式的数据。

2. Fetch API

发送GET请求

fetch("https://api.example.com/data")
  .then(response => {
    if (!response.ok) {
      throw new Error("Network response was not ok");
    }
    return response.json();
  })
  .then(data => {
    console.log("Data:", data);
  })
  .catch(error => {
    console.error("Fetch error:", error);
  });

在上述例子中,使用 fetch 函数发起 GET 请求,通过 .then() 方法处理响应,并使用 .catch() 方法捕获错误。

发送POST请求

fetch("https://api.example.com/post", {
  method: "POST",
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({ key: "value" })
})
  .then(response => {
    if (!response.ok) {
      throw new Error("Network response was not ok");
    }
    return response.json();
  })
  .then(data => {
    console.log("Data:", data);
  })
  .catch(error => {
    console.error("Fetch error:", error);
  });

在上述例子中,使用 fetch 函数发起 POST 请求,通过配置 methodheadersbody选项来发送 JSON 格式的数据。

3. 对比与总结

XMLHttpRequest

  • 老式API:XMLHttpRequest 是较老的 API,虽然在现代浏览器中仍然可用,但 Fetch API 更加现代且易用
  • 繁琐的用法:相对于 Fetch API,XMLHttpRequest 的用法相对繁琐,需要多个步骤配置和处理

Fetch API

  • 现代API:Fetch API 是一个现代的 API,提供了更简单和灵活的方式来处理 HTTP 请求
  • Promise基础:Fetch API 基于 Promise,使得异步代码更易读和管理
  • 更直观的API设计:Fetch API 的设计更加直观,支持链式调用,简化了 HTTP 请求的写法

4. 总结

根据项目的需求和个人喜好,选择合适的 HTTP 请求方式是很重要的。XMLHttpRequest 适用于更古老的项目或需要与较老系统交互的场景,而 Fetch API 更适合现代化的项目,提供了更直观和简单的 API。希望通过本篇博客,你对 JavaScript 中使用 XMLHttpRequest 和 Fetch API 发送 HTTP 请求有了更深入的了解。

  • 11
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值