使用 Axios 获取用户数据并渲染——个人信息设置

打印 上一主题 下一主题

主题 1613|帖子 1613|积分 4839

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
目录

1. HTML 部分(前端页面结构)
HTML 结构剖析:
2. JavaScript 部分(信息渲染逻辑)
JavaScript 剖析:
3. 完整流程
4. 总结
5. 适用场景

本文将介绍怎样通过 Axios 从服务器获取用户信息,并将这些信息动态渲染到个人信息设置页面。用户可以通过表单来检察和更新他们的资料,如邮箱、昵称、性别、个人简介等。为了更直观地理解,本文提供了完整的 HTML 和 JavaScript 示例代码,用户可以直接复制并使用。

1. HTML 部分(前端页面结构)

  1. <!DOCTYPE html>
  2. <html lang="zh-CN">
  3. <head>
  4.   <meta charset="UTF-8">
  5.   <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6.   <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7.   <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/css/bootstrap.min.css" rel="stylesheet">
  8.   <link rel="stylesheet" href="./css/index.css">
  9.   <title>个人信息设置</title>
  10. </head>
  11. <body>
  12.   <!-- toast 提示框 -->
  13.   <div class="toast my-toast" data-bs-delay="1500">
  14.     <div class="toast-body">
  15.       <div class="alert alert-success info-box">
  16.         操作成功
  17.       </div>
  18.     </div>
  19.   </div>
  20.   <!-- 核心内容区域 -->
  21.   <div class="container">
  22.     <ul class="my-nav">
  23.       <li class="active">基本设置</li>
  24.       <li>安全设置</li>
  25.       <li>账号绑定</li>
  26.       <li>新消息通知</li>
  27.     </ul>
  28.     <div class="content">
  29.       <div class="info-wrap">
  30.         <h3 class="title">基本设置</h3>
  31.         <form class="user-form" action="javascript:;">
  32.           <div class="form-item">
  33.             <label for="email">邮箱</label>
  34.             <input id="email" name="email" class="email" type="text" placeholder="请输入邮箱" autocomplete="off">
  35.           </div>
  36.           <div class="form-item">
  37.             <label for="nickname">昵称</label>
  38.             <input id="nickname" name="nickname" class="nickname" type="text" placeholder="请输入昵称" autocomplete="off">
  39.           </div>
  40.           <div class="form-item">
  41.             <label>性别</label>
  42.             <label class="male-label"><input type="radio" name="gender" class="gender" value="0">男</label>
  43.             <label class="male-label"><input type="radio" name="gender" class="gender" value="1">女</label>
  44.           </div>
  45.           <div class="form-item">
  46.             <label for="desc">个人简介</label>
  47.             <textarea id="desc" name="desc" class="desc" placeholder="请输入个人简介" cols="20" rows="10" autocomplete="off"></textarea>
  48.           </div>
  49.           <button class="submit">提交</button>
  50.         </form>
  51.       </div>
  52.       <div class="avatar-box">
  53.         <h4 class="avatar-title">头像</h4>
  54.         <img class="prew" src="./img/头像.png" alt="">
  55.         <label for="upload">更换头像</label>
  56.         <input id="upload" type="file" class="upload">
  57.       </div>
  58.     </div>
  59.   </div>
  60.   <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  61.   <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.2.3/dist/js/bootstrap.min.js"></script>
  62.   <script src="./lib/form-serialize.js"></script>
  63.   <script src="./js/index.js"></script>
  64. </body>
  65. </html>
复制代码
HTML 结构剖析:



  • 页面头部:使用了 Bootstrap CSS 样式库和自定义样式,设置了页面的基本样式。
  • toast 提示框:用于在操作成功时显示提示消息。
  • 个人信息表单:包括邮箱、昵称、性别(单选框)、个人简介等输入项,用户可以编辑这些信息。
  • 头像更换部分:用户可以选择新头像并上传,通过 <input type="file"> 实现文件选择。
  • 按钮与提示框:提交表单后,页面会弹出一个提示框,显示操作是否成功。

2. JavaScript 部分(信息渲染逻辑)

  1. /**
  2. * 目标1:信息渲染
  3. *  1.1 获取用户的数据
  4. *  1.2 回显数据到标签上
  5. */
  6. axios({
  7.     url: 'http://hmajax.itheima.net/api/settings', // 确保 URL 是正确的
  8.     method: 'get',  // GET 请求方法
  9.     params: {
  10.         creator: '小宁'  // 请求参数,假设是根据用户名获取设置
  11.     }
  12. }).then(result => {
  13.     const userObj = result.data.data; // 假设返回的数据结构是 { data: { ... } }
  14.     console.log(userObj);
  15.     // 1. 遍历用户数据并渲染到页面
  16.     Object.keys(userObj).forEach(key => {
  17.         if (key === 'avatar') {
  18.             // 设置头像
  19.             document.querySelector('.prew').src = userObj[key];
  20.         } else if (key === 'gender') {
  21.             // 设置性别
  22.             const RadioList = document.querySelectorAll('.gender');
  23.             const gNum = userObj[key];  // 性别值是 0 或 1
  24.             RadioList[gNum].checked = true;  // 根据性别值选择相应的单选框
  25.         } else {
  26.             // 对其他字段(如姓名、邮箱、简介等)设置值
  27.             document.querySelector(`.${key}`).value = userObj[key];
  28.         }
  29.     });
  30. }).catch(error => {
  31.     console.error('请求失败:', error);  // 错误处理
  32. });
复制代码
JavaScript 剖析:


  • 发送 GET 请求

    • 使用 axios 发送 GET 请求,params 参数传递给服务器以获取用户设置数据。这里以 creator: '小宁' 为请求参数,表示获取小宁的用户设置。

  • 遍历并渲染数据

    • Object.keys(userObj) 获取返回数据的全部字段名。
    • 根据不同字段渲染到页面:

      • 头像:如果字段名为 avatar,则通过 document.querySelector('.prew') 获取头像图片元素,更新其 src 属性。
      • 性别:如果字段名为 gender,根据返回的性别值(0 或 1)更新相应的单选框。
      • 其他字段:通过 document.querySelector(\.${key}`)获取相应的输入框或文本区域,并设置其value` 为返回的数据值。


  • 错误处理

    • 使用 .catch() 捕获请求中的任何错误,方便调试。


3. 完整流程


  • 页面加载时,JavaScript 发送 GET 请求至服务器,获取小宁的用户数据。
  • 服务器返回的数据后,JavaScript 将数据逐个渲染到页面上的输入框、单选框、头像等元素。
  • 用户可以检察和编辑个人信息,修改内容后可以提交表单。

4. 总结

这个示例展示了怎样使用 Axios 从服务器获取用户的个人设置,并将这些设置动态渲染到 HTML 页面中。使用这种方法,可以轻松实现用户资料显示和编辑功能,并通过简朴的表单更新用户数据。

5. 适用场景



  • 个人信息设置页面:用户可以检察和修改本身的信息,如邮箱、昵称、性别等。
  • 用户资料展示:适用于展示用户信息并答应编辑的场景,如社交网站、论坛等。
  • 后台管理系统:管理员可以通过类似的方法展示并更新用户资料。
通过这个简朴的代码示例,你可以轻松实现一个功能完备的个人资料管理页面,提升用户体验。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

十念

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表