当前位置: 首页 > article >正文

什么是XMLHttpRequest?及其详细使用说明

目录

什么是 XMLHttpRequest?

XMLHttpRequest 的基本使用流程:

示例一:使用 XMLHttpRequest 获取数据并显示

HTML 和 JavaScript 代码

代码解释

示例二:发送带有查询参数的请求

HTML 和 JavaScript 代码

代码解释

XMLHttpRequest 的常用方法

总结


XMLHttpRequest 是一种浏览器内置的 JavaScript 对象,它允许浏览器与服务器进行异步通讯,从而无需刷新整个网页即可与服务器交换数据。XMLHttpRequest 最常用于 AJAX(Asynchronous JavaScript and XML)技术中,用来实现动态网页更新,提供更流畅的用户体验。

通过 XMLHttpRequest 对象,开发者可以向服务器发送请求并接收响应,而这些过程都是在后台进行的,用户不会察觉到页面的刷新或重载。最常见的应用场景包括:数据查询、提交表单、动态加载页面内容等。

XMLHttpRequest 的基本使用流程:

  1. 创建一个 XMLHttpRequest 对象
  2. 配置请求方式(如 GET 或 POST)和请求的 URL 地址
  3. 发送请求并监听服务器响应
  4. 接收响应并处理数据

示例一:使用 XMLHttpRequest 获取数据并显示

以下是一个简单的示例,演示如何使用 XMLHttpRequest 发送请求,获取数据并将其显示在网页上。

HTML 和 JavaScript 代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>XMLHttpRequest 基础使用</title>
</head>

<body>

  <p class="my-p"></p>

  <script>
    /**
     * 目标:使用 XMLHttpRequest 对象与服务器进行通信,获取数据并展示
     * 1. 创建 XMLHttpRequest 对象
     * 2. 配置请求方法和 URL 地址
     * 3. 监听 loadend 事件,接收响应数据
     * 4. 发起请求
     */
    
    // 创建 XMLHttpRequest 对象
    const xhr = new XMLHttpRequest();
    
    // 配置请求方式及 URL 地址
    xhr.open('GET', 'http://hmajax.itheima.net/api/province');
    
    // 监听请求结束事件
    xhr.addEventListener('loadend', () => {
      // 解析服务器返回的数据
      const data = JSON.parse(xhr.response);
      
      // 将数据展示在页面中
      document.querySelector('.my-p').innerHTML = data.list.join('<br>');
    });

    // 发送请求
    xhr.send();
  </script>
  
</body>

</html>
代码解释
  1. 创建 XMLHttpRequest 对象

    const xhr = new XMLHttpRequest();
    

    这行代码创建了一个新的 XMLHttpRequest 对象,它将用于发送和接收数据。

  2. 配置请求方法和 URL

    xhr.open('GET', 'http://hmajax.itheima.net/api/province');
    

    使用 open() 方法来配置请求。第一个参数是请求方法(在这里是 GET),第二个参数是请求的 URL 地址(该 URL 返回一个省份列表)。

  3. 监听 loadend 事件

    xhr.addEventListener('loadend', () => {
      const data = JSON.parse(xhr.response);
      document.querySelector('.my-p').innerHTML = data.list.join('<br>');
    });
    

    loadend 事件在请求完成后触发。当服务器响应返回时,我们可以通过 xhr.response 获取响应的内容。然后将 JSON 格式的响应数据解析并显示在网页上。

  4. 发送请求

    xhr.send();
    

    调用 send() 方法来实际发送请求到服务器。

示例二:发送带有查询参数的请求

XMLHttpRequest 不仅可以用于简单的 GET 请求,还可以携带查询参数(如搜索关键字、分类等)来获取特定的数据。以下是一个带有查询参数的请求示例。

HTML 和 JavaScript 代码
<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>XMLHttpRequest 查询参数</title>
</head>

<body>
  <p class="city-p"></p>

  <script>
    /**
     * 目标:使用 XMLHttpRequest 发送带有查询参数的 GET 请求,
     * 查询广东省的下属城市列表
     */
    const xhr = new XMLHttpRequest();
    
    // 配置 GET 请求,并携带查询参数
    xhr.open('GET', 'http://hmajax.itheima.net/api/city?pname=广东省');
    
    // 监听请求结束事件
    xhr.addEventListener('loadend', () => {
      // 解析服务器返回的数据
      const data = JSON.parse(xhr.response);
      
      // 将城市列表展示在页面中
      document.querySelector('.city-p').innerHTML = data.list.join('<br>');
    });
    
    // 发送请求
    xhr.send();
  </script>

</body>

</html>
代码解释
  1. 配置带查询参数的 GET 请求

    xhr.open('GET', 'http://hmajax.itheima.net/api/city?pname=广东省');
    

    GET 请求的 URL 后面附加了查询参数 pname=广东省,表示查询广东省下属的城市列表。

  2. 处理响应并展示城市列表

    document.querySelector('.city-p').innerHTML = data.list.join('<br>');
    

    当服务器返回数据后,将返回的城市列表以 <br> 标签连接并显示在页面中的 <p class="city-p"></p> 元素中。

XMLHttpRequest 的常用方法

  • open(method, url):初始化一个请求,method 是请求方式(如 GET 或 POST),url 是请求的目标地址。
  • send():发送请求。对于 GET 请求,可以直接调用 send();对于 POST 请求,通常需要先设置请求体(如 send(data))。
  • setRequestHeader(header, value):设置请求头。用于发送请求时指定附加的 HTTP 头部信息。
  • addEventListener(event, callback):监听事件,比如 loadend 事件,处理请求的完成。

总结

XMLHttpRequest 是实现异步请求和动态网页更新的基础工具,广泛用于现代网页应用中,尤其是在 AJAX 技术中。通过 XMLHttpRequest,开发者可以从服务器获取数据并更新网页,而无需重新加载整个页面。虽然 XMLHttpRequest 已经被较新的 Fetch API 所取代,但它仍然是学习和理解前端开发中异步请求的一个重要工具。

本示例展示了如何使用 XMLHttpRequest 进行基础的请求操作,以及如何携带查询参数向服务器发送 GET 请求,处理响应数据并动态更新页面内容。


http://www.kler.cn/a/544059.html

相关文章:

  • wordpress主题制作
  • 开源身份和访问管理方案之keycloak(一)快速入门
  • DeepAR:一种用于时间序列预测的深度学习模型
  • LVS作业
  • 【Python】集合
  • 初识计算机网络
  • 功能测试的范畴与目标
  • 通过环境变量实现多个 python 版本的自由切换以及 Conda 虚拟环境的使用教程
  • 深入探究 Rust 测试:灵活控制测试的执行方式
  • 【数据结构入门】一、数组
  • FlutterWeb实战:07-自动化部署
  • Spring Boot + ShardingSphere 踩坑记
  • 华为云函数计算FunctionGraph部署ollma+deepseek
  • Java进阶阶段的学习要点
  • 联想电脑如何进入BIOS?
  • 汽车ADAS
  • Python基于Django的微博热搜、微博舆论可视化系统(V3.0)【附源码】
  • Ansible的主机清单
  • c/c++蓝桥杯经典编程题100道(21)背包问题
  • 【网络安全】常见网络协议
  • 【工业安全】-CVE-2019-17621-D-Link Dir-859L 路由器远程代码执行漏洞
  • JAVA安全—Shiro反序列化DNS利用链CC利用链AES动态调试
  • 23页PDF | 国标《GB/T 44109-2024 信息技术 大数据 数据治理实施指南 》发布
  • ASP.NET Core SignalR的协议协商
  • 在vivado中对数据进行延时,时序对齐问题上的理清
  • Web应用项目开发 ——Spring Boot邮件发送