首页 > 其他分享 >Axios 的地区查询(案例)

Axios 的地区查询(案例)

时间:2025-01-20 13:30:59浏览次数:3  
标签:Axios 请求 list 列表 案例 查询 省份

目录

1. 项目背景与功能概述

2. 完整代码

3. HTML 结构解析

输入表单

查询按钮

地区列表

4. JavaScript 部分解析

监听点击事件

发送 Axios 请求

处理响应数据

5. 完整流程

6. 总结

7. 适用场景

8. 优化和扩展


本案例展示了如何使用 Axios 发送带查询参数的 HTTP 请求,查询指定省份和城市下的地区列表。通过用户输入的省份名称和城市名称,向后端 API 发送请求,获取该地区下的具体区域信息,并将返回的数据动态渲染到网页上。

以下是完整的代码及详细分析,帮助您理解如何实现这个功能。


1. 项目背景与功能概述

  • 功能目的:通过用户输入省份和城市的名称,查询该地区下的具体区/县名称。
  • 实现方式:使用 Axios 库发送 HTTP 请求,结合 HTML 表单JavaScript 动态更新页面内容,来展示查询结果。

2. 完整代码

<!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>04.案例_地区查询</title>
  <!-- 引入 Bootstrap 样式 -->
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css">
  <style>
    :root {
      font-size: 15px;
    }

    body {
      padding-top: 15px;
    }
  </style>
</head>
<body>
  <div class="container">
    <!-- 输入省份名字 -->
    <form id="editForm" class="row">
      <div class="mb-3 col">
        <label class="form-label">省份名字</label>
        <input type="text" value="北京" name="province" class="form-control province" placeholder="请输入省份名称" />
      </div>
      <!-- 输入城市名字 -->
      <div class="mb-3 col">
        <label class="form-label">城市名字</label>
        <input type="text" value="北京市" name="city" class="form-control city" placeholder="请输入城市名称" />
      </div>
    </form>
    <button type="button" class="btn btn-primary sel-btn">查询</button>
    <br><br>
    <p>地区列表: </p>
    <ul class="list-group">
      <li class="list-group-item">东城区</li>
    </ul>
  </div>

  <!-- 引入 Axios 库 -->
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    // 监听查询按钮的点击事件
    document.querySelector('.sel-btn').addEventListener('click', () => {

      // 获取用户输入的省份和城市名称
      let pName = document.querySelector('.province').value
      let cName = document.querySelector('.city').value

      // 发送 Axios 请求,查询地区列表
      axios({
        url: 'http://hmajax.itheima.net/api/area',  // API 地址
        params: {
          pname: pName,  // 省份名称
          cname: cName   // 城市名称
        }
      }).then(result => {
        // 获取返回的地区数据列表
        let list = result.data.list
        console.log(list);

        // 将地区名称动态渲染到页面
        let theLi = list.map(areaName => `<li class="list-group-item">${areaName}</li>` ).join('')
        console.log(theLi);

        // 更新页面上的地区列表
        document.querySelector('.list-group').innerHTML = theLi

      }).catch(error => {
        // 请求失败时输出错误信息
        console.error('请求失败:', error);
      })

    })
  </script>
</body>
</html>

3. HTML 结构解析

输入表单
<form id="editForm" class="row">
  <div class="mb-3 col">
    <label class="form-label">省份名字</label>
    <input type="text" value="北京" name="province" class="form-control province" placeholder="请输入省份名称" />
  </div>
  <div class="mb-3 col">
    <label class="form-label">城市名字</label>
    <input type="text" value="北京市" name="city" class="form-control city" placeholder="请输入城市名称" />
  </div>
</form>
  • 页面中包含两个输入框,用于接收用户输入的省份和城市名称。
  • 每个输入框通过 class 属性指定了相应的类名 provincecity,便于 JavaScript 获取它们的值。
查询按钮
<button type="button" class="btn btn-primary sel-btn">查询</button>
  • 当用户点击查询按钮时,系统会触发相应的事件,发起 API 请求。
地区列表
<ul class="list-group">
  <li class="list-group-item">东城区</li>
</ul>
  • 初始时,页面显示一个包含示例区域的列表“东城区”。查询成功后,返回的数据将替换这个列表内容。

4. JavaScript 部分解析

监听点击事件
document.querySelector('.sel-btn').addEventListener('click', () => {
  let pName = document.querySelector('.province').value
  let cName = document.querySelector('.city').value
  // 省略请求部分
});
  • 当用户点击查询按钮时,JavaScript 会读取输入框中的省份 (pName) 和城市 (cName) 的值。
发送 Axios 请求
axios({
  url: 'http://hmajax.itheima.net/api/area',
  params: {
    pname: pName,
    cname: cName
  }
})
  • 使用 Axios 库发送 GET 请求,向后端 API 请求数据。请求时,我们将用户输入的省份和城市名称作为查询参数 (pname, cname) 发送。
处理响应数据
.then(result => {
  let list = result.data.list  // 获取返回的地区数据列表
  let theLi = list.map(areaName => `<li class="list-group-item">${areaName}</li>` ).join('')
  document.querySelector('.list-group').innerHTML = theLi
})
  • 请求成功时,then() 方法会处理响应结果,获取返回的数据列表,并将每个区域名称生成一个 <li> 元素。
  • 通过 .map() 方法遍历列表,将每个区域名称渲染为一个 <li> 标签,使用 join('') 生成一个完整的 HTML 字符串。
  • 然后,更新页面上的 <ul class="list-group"> 列表,显示查询结果。

5. 完整流程

  1. 用户在输入框中输入省份和城市名称,例如:“北京”和“北京市”。
  2. 用户点击查询按钮,页面通过 Axios 向后端 API 发起请求。
  3. 后端返回该城市下的区/县列表数据。
  4. 页面通过 JavaScript 动态渲染返回的地区列表,替换原本的示例数据,展示新的地区列表。

6. 总结

  • Axios 是一个基于 Promise 的 HTTP 客户端,使用它可以轻松发送 GET 或 POST 请求获取数据。
  • 本案例演示了如何通过传递查询参数(省份和城市名称)向 API 发送请求,并将返回的地区列表动态更新到网页中。
  • 通过 JavaScript 和 DOM 操作,可以在前端实现交互式的数据展示,提升用户体验。

7. 适用场景

  • 地址查询:适用于需要根据省份和城市查询地区、区县等信息的应用场景。
  • 城市选择:适用于多级联动的城市选择功能,尤其在需要通过用户输入进行查询时。
  • Web 开发学习:适合 Web 开发者学习如何与后端 API 交互、处理 API 请求并动态更新页面内容。

8. 优化和扩展

  • 错误处理:可以增加更多的错误处理逻辑,例如显示友好的提示信息(如“请求失败”)。
  • 输入验证:可以在发送请求前对输入进行验证,确保用户输入有效的省份和城市名称。
  • 缓存机制:可以实现查询结果缓存,避免重复查询同一地区,提高性能。
  • 分页支持:如果地区数据较多,可以考虑添加分页功能,以便用户查看所有地区。

这样,您就能够在自己的项目中实现一个动态的地区查询功能,提升用户体验,并加深对前端开发和 API 调用的理解。

标签:Axios,请求,list,列表,案例,查询,省份
From: https://blog.csdn.net/2402_84971234/article/details/145256991

相关文章

  • Linux查询端口是否被占用的四种方法
    一个面试题,使用三种不同的方法查看8080被哪个进程占用了。通常比较熟悉的方法是netstat和lsof两种,但还有什么方法呢。1.netstat或ss命令netstat-anlp|grep802.lsof命令这个命令是查看进程占用哪些文件的lsof-i:803.fuser命令fuser命令和lsof正好相反,是查看某个文......
  • gorm - datatypes.JSONQuery 多种 JSON 查询方式
    一.官方:https://github.com/go-gorm/datatypes 二.modeltypeUserstruct{Name`gorm:"column:name;type:varchar(255);`Attributesdatatypes.JSON`gorm:"column:attributes;type:json"`}//数据内容user:=model.Us......
  • 基于企业场景的大数据治理实施方案:技术、方法与案例分析
    ......
  • 【数据库】MySQL数据库之约束与多表查询
    约束1.概述概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据目的:保证数据库中数据的正确性、有效性,完整性和一致性分类:注意:约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束2.外键约束概念外键用来让两张表的数据之间建立连接,从而保证数据的一致性......
  • Maui学习笔记-CommunityToolkit.Maui动画案例
    动画元素在CommunityToolkit.Maui工具包中提供了AnimationBehavior和BaseAnimation类。AnimationBehavior作用在视图UI元素,并用作动画的容器。BaseAnimation是实现动画逻辑的基类。下面这个案例是使一个按钮实现淡入淡出的效果在主页的隐藏文件中创建一个类继承Ba......
  • 【NodeJS渗透】提取和分析.asar文件的案例研究
    免责声明⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!硬编码密钥(在SQLite中)和加密算法(在AesFormula.js文件中)信息泄露导致真实凭据被泄露一、案例研究本节案例研究将讨论我......
  • 前端发送Ajax请求的技术Axios
    目录1.引入Axios文件2.使用Axios发送请求2.1请求方法的别名请求的URL地址怎么来的?后端实现前后端交互1.引入Axios文件<scriptsrc="https://unpkg.com/axios/dist/axios.min.js"></script>2.使用Axios发送请求2.1请求方法的别名方法描述axios.get(url[,config......
  • MySQL——DQL基本查询 聚合函数 分组查询 排序查询 分页查询
    1.3DQL语法DQL:数据查询语言,用来查询数据库表中的记录。DQL基本查询1.查询多个字段select字段1,字段2,字段3...from表名;案例查询指定字段nameworknoageselectname,workno,agefromemp;2.查询所有字段select*from表名;select*fromemp;3.设置别名select字段1a......
  • To 遗留类 和 From 遗留类 与 传统日期处理的转换(配有详细案例代码解析)
    前言:小编最近又要练科目三了天天好多事情啊,不知道大家放了假事情多不多我们继续日更!!!我们一直都是以这样的形式,让新手小白轻松理解复杂晦涩的概念,把Java代码拆解的清清楚楚,每一步都知道他是怎么来的,为什么用这串代码关键字,对比同类型的代码,让大家真正看完以后融会贯通......
  • Golang结合MySQL和DuckDB提高查询性能
    要在Golang中组合MySQL和DuckDB以提高查询性能,请考虑使用混合查询执行方法。这种方法利用了MySQL强大的事务管理和DuckDB闪电般的分析处理能力。本文介绍如何充分利用两者的方法。各取所长用MySQL处理事务,用DuckDB处理分析MySQL应该处理常规的INSERT、UPDATE和DELETE操......