14、 使用 Fetch API 和 XMLHttpRequest 进行资源请求

使用 Fetch API 和 XMLHttpRequest 进行资源请求

1. Fetch API 概述

Fetch API 提供了一种简单且强大的方式来发起网络请求,并处理服务器响应。它允许我们在不重新加载或导航页面的情况下异步请求和处理服务器数据,这正是 Ajax(Asynchronous JavaScript and XML)的核心思想。Fetch API 的核心是 Request 对象,它可以通过 Request() 构造函数生成。

创建 Request 对象

const request = new Request('https://api.example.com/data', {
  method: 'GET',
  headers: {
    'Content-Type': 'application/json'
  }
});

发送 Fetch 请求

使用 fetch() 方法可以发送请求并处理响应:

fetch(request)
  .then(response => response.json())
  .then(data => console.log(data))
  .catch(error => console.error('Error:', error));

2. 使用 XMLHttp

### 使用 Fetch API XMLHttpRequest 实现 HTTP 请求 #### 1. Fetch API 的实现方法 Fetch API 提供了一种更现代化的方式用于发起网络请求。它返回的是一个 Promise 对象,允许开发者通过链式调用来处理异步操作。 以下是使用 Fetch API 发起 GET 请求的一个简单示例: ```javascript fetch('https://api.example.com/data') // URL 或路径 .then(response => { if (!response.ok) { // 检查状态码是否成功 throw new Error(`HTTP error! status: ${response.status}`); } return response.json(); // 将响应解析为 JSON 数据 }) .then(data => console.log(data)) // 处理数据 .catch(error => console.error('Error:', error)); // 错误捕获 ``` 如果需要发送 POST 请求,则可以通过传递配置对象来指定请求参数[^1]: ```javascript fetch('https://api.example.com/data', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ key: 'value' }) // 转换为字符串形式的数据体 }) .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error('Error:', error)); ``` --- #### 2. XMLHttpRequest 的实现方法 XMLHttpRequest 是一种较老的技术,但它仍然广泛应用于许多项目中。它的主要特点是提供了事件驱动模型来进行请求监听错误处理。 下面是一个基于 `GET` 方法的 XMLHTTPRequest 示例: ```javascript const xhr = new XMLHttpRequest(); xhr.open('GET', 'https://api.example.com/data', true); // 初始化请求 (true 表明异步) // 设置回调函数以处理加载完成后的逻辑 xhr.onload = function () { if (this.status >= 200 && this.status < 300) { // 成功范围内的状态码 const data = JSON.parse(this.responseText); console.log(data); } else { console.error('Request failed with status:', this.status); } }; // 设置错误处理器 xhr.onerror = function () { console.error('Network request failed'); }; // 发送请求 xhr.send(); ``` 对于 `POST` 请求,可以按照如下方式进行设置: ```javascript const xhr = new XMLHttpRequest(); xhr.open('POST', 'https://api.example.com/data', true); // 配置头部信息 xhr.setRequestHeader('Content-Type', 'application/json'); // 定义 onload 函数 xhr.onload = function () { if (this.status === 200 || this.status === 201) { const data = JSON.parse(this.responseText); console.log(data); } else { console.error('Request failed with status:', this.status); } }; // 定义 onerror 函数 xhr.onerror = function () { console.error('Network request failed'); }; // 发送带有主体的内容 xhr.send(JSON.stringify({ key: 'value' })); ``` --- ### 总结对比 尽管两者都可以满足基本的 HTTP 请求需求,但 Fetch API 更加简洁易读,并且支持现代 JavaScript 特性如 Promises async/await 结构。而 XMLHttpRequest 则更加灵活,在某些特定场景下可能更适合复杂的需求。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值