📜  xmlhttprequest js - Javascript (1)

📅  最后修改于: 2023-12-03 15:06:04.852000             🧑  作者: Mango

主题:XMLHttpRequest (XHR) in JavaScript

XMLHttpRequest (XHR) 是 JavaScript 中的一种 API,可用于与服务器交换数据。XHR 对象允许在不重新加载页面的情况下更新网页内容。它在现代web应用中经常被使用,因为可以异步请求数据并且不需要刷新整个页面。

如何创建一个XHR对象

我们可以使用 XMLHttpRequest 构造函数创建一个新的 XMLHttpRequest 对象。

const xhr = new XMLHttpRequest();
常见的XHR 请求
发送一个GET请求
xhr.open('GET', 'http://localhost:8000/data', true);
xhr.send();
发送一个POST请求
xhr.open('POST', 'http://localhost:8000/post', true);
xhr.setRequestHeader('Content-Type', 'application/json');
xhr.send(JSON.stringify({ name: 'Alice', age: 20 }));
读取响应

当收到响应时,我们可以通过以下方式读取响应:

xhr.onreadystatechange = function() {
  if (xhr.readyState === XMLHttpRequest.DONE) {
    if (xhr.status === 200) {
      console.log(xhr.responseText);
    } else {
      console.log('请求失败');
    }
  }
};
不同浏览器的实现

不同的浏览器可能会有不同的 XMLHttpRequest 实现。IE6和IE7中的XHR不同于其他现代浏览器中的XHR。因此,如果您在进行跨浏览器编程,请注意这些区别。

使用Promise和fetch API替代XHR

除了使用XHR,现代web应用还经常使用Promise和fetch提供的API来进行http请求。这两种方法优雅且易于使用,同时还具有更好的错误处理机制。

// 使用Promise
fetch(url)
  .then(response => response.text())
  .then(data => console.log(data))
  .catch(error => console.log(error));

// 使用Async/Await
async function fetchData(url) {
  try {
    const response = await fetch(url);
    const data = await response.text();
    console.log(data);
  } catch(error) {
    console.log(error);
  }
}