首页 > 其他分享 >AJAX 02-个人信息设置

AJAX 02-个人信息设置

时间:2024-09-17 17:54:20浏览次数:13  
标签:02 const 个人信息 userObj AJAX result querySelector document data

 图片上传

1. 获取图片文件对象

2. 使用 FormData 携带图片文件

const fd = new FormData()
fd.append(参数名, 值)

3. 提交表单数据到服务器,使用图片 url 网址

  <!-- 文件选择元素 -->
  <input type="file" class="upload">
  <img src="" alt="" class="my-img">
  <script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
  <script>
    // change 改变事件
    document.querySelector('.upload').addEventListener('change', e => {
      // 1. 获取图片文件
      console.log(e.target.files[0])
      // 2. 使用 FormData 携带图片文件
      const fd = new FormData()
      fd.append('img', e.target.files[0])
      // 3. 提交到服务器,获取图片url网址使用
      axios({
        url: 'http://hmajax.itheima.net/api/uploadimg',
        method: 'POST',
        data: fd
      }).then(result => {
        console.log(result)
        // 取出图片url网址,用img标签加载显示
        const imgUrl = result.data.data.url
        document.querySelector('.my-img').src = imgUrl
      })
    })
  </script>

1. 信息渲染

// 1. 信息渲染
// 获取用户的数据,回显数据到标签上
// 给自己取个外号并告诉服务器,获取对应的用户信息
const creator = '波仔'
axios({
  url: 'http://hmajax.itheima.net/api/settings',
  params: {
    creator
  }
}).then(result => {
  // console.log(result)
  // console.log(result.data.data)
  const userObj = result.data.data
  // 回显数据到标签上
  Object.keys(userObj).forEach(item => {
    if (item === 'avatar') {
      // 赋予默认头像
      document.querySelector('.prew').src = userObj[item]
    } else if (item === 'gender') {
      // 赋予默认性别
      // 获取性别单选框   NodeList(2) [input.gender, input.gender]
      const radioList = document.querySelectorAll('.gender')
      // 获取性别数字
      const num = userObj[item]
      // 性别数字作为下标,找到对应性别单选框,设置选中状态
      radioList[num].checked = true
    } else {
      // 赋予默认内容
      document.querySelector(`.${item}`).value = userObj[item]
    }
  })
})

2. 图像修改

// for属性的值与id属性的值相对应,用于提高可访问性
// 当用户点击label标签时,与之相关联的输入元素会获得焦点
<label for="upload">更换头像</label>
<input id="upload" type="file" class="upload">
// 2. 修改头像
// 获取头像文件,提交服务器并更新头像
document.querySelector('.upload').addEventListener('change', e => {
  // 获取头像文件
  // console.log(e.target.files[0])
  const fd = new FormData()
  fd.append('avatar', e.target.files[0])
  fd.append('creator', creator)
  // 提交服务器并更新头像
  axios({
    url: 'http://hmajax.itheima.net/api/avatar',
    method: 'PUT',
    data: fd
  }).then(result => {
    const imgUrl = result.data.data.avatar
    document.querySelector('.prew').src = imgUrl
  })
})

3. 提交表单

// 3. 提交表单
// 收集表单信息,提交到服务器保存
document.querySelector('.submit').addEventListener('click', () => {
  // 收集表单信息
  const userForm = document.querySelector('.user-form')
  const userObj = serialize(userForm, { hash: true, empty: true })
  userObj.creator = creator
  // 性别字符型数字,转成数字类型
  userObj.gender = +userObj.gender
  // 提交到服务器保存
  axios({
    url: 'http://hmajax.itheima.net/api/settings',
    method: 'PUT',
    data: userObj
  })
})

4. 提示框

<div class="toast my-toast" data-bs-delay="1500">
    // 提示框内容
</div>
// 创建提示框对象
const toastDom = document.querySelector('CSS选择器')
const toast = new bootstrap.Toast(toastDom)

// 显示提示框
toast.show()
// 3. 提交表单
// 收集表单信息,提交到服务器保存
document.querySelector('.submit').addEventListener('click', () => {
  // 收集表单信息
  const userForm = document.querySelector('.user-form')
  const userObj = serialize(userForm, { hash: true, empty: true })
  userObj.creator = creator
  // 性别字符型数字,转成数字类型
  userObj.gender = +userObj.gender
  // 提交到服务器保存
  axios({
    url: 'http://hmajax.itheima.net/api/settings',
    method: 'PUT',
    data: userObj
  }).then(result => {
    // 创建提示框对象
    const toastDom = document.querySelector('.my-toast')
    const toast = new bootstrap.Toast(toastDom)
    // 显示提示框
    toast.show()
  })
})

标签:02,const,个人信息,userObj,AJAX,result,querySelector,document,data
From: https://blog.csdn.net/weixin_53676387/article/details/142315596

相关文章

  • 2022高德POI数据
    在IT行业中,高德地图是领先的在线地图服务平台之一,提供了丰富的地理信息数据,包括地点(PointofInterest,简称POI)数据。POI数据是指地图上具有特定功能或信息的点,如餐馆、酒店、加油站等。这些数据对于开发者来说非常有价值,可以用于导航、位置分析、商业智能等多种应用。高德地......
  • 最强神器Typora 2024(亲测有效)| Markdown 工具推荐
    听俺讲一下大家好,我是程序员-杨胡广,今天想给大家分享一个在编写文档时的神器——Typora。相信不少小伙伴都在寻找一款既简洁又强大的Markdown编辑工具,而Typora无疑是最值得推荐的选择。当我在大学时偶然发现了它,直到今天依然觉得它无可替代。最近,我成功激活了最新版的......
  • 2024年全国大学生数学建模竞赛B题生产过程中的决策问题分析
    目录引言问题1:抽样检测方案设计问题2:生产过程中的决策决策阶段划分决策方案结果问题3:多道工序和零配件的决策生产流程决策过程问题4:基于抽样检测的重新决策动态调整次品率结论引言在2024年全国大学生数学建模竞赛B题中,企业需要对生产中的各个环节进行决策......
  • [语言月赛 202408] 蓝色的网易云
    [语言月赛202408]蓝色的网易云题目背景你也在听吗落单的孩子啊别害怕别害怕黑夜不会太长悬崖上的花让我为你摘下数一瓣落一瓣就少一朵忧伤题目描述风的歌单中共有nn......
  • [GESP202406 四级] 宝箱
    [GESP202406四级]宝箱题目描述小杨发现了nnn个宝箱,其中第iii......
  • L1-002 打印沙漏
    本题要求你写个程序把给定的符号打印成沙漏的形状。例如给定17个“*”,要求按下列格式打印*****************所谓“沙漏形状”,是指每行输出奇数个符号;各行符号中心对齐;相邻两行符号数差2;符号数先从大到小顺序递减到1,再从小到大顺序递增;首尾符号数相等。给定任意N个......
  • Day5||242.有效的字母异位词|349.两个数组的交集|202.快乐数|1.两数之和
    哈希表理论基础哈希表(hashtable):是根据关键码的值而直接进行范围的数据结构。如数组也是一张哈希表。 解决问题:一般哈希表都是用来快速判断一个元素是否出现集合里。(牺牲空间换取时间)例如要查询一个名字是否在这所学校里。要枚举的话时间复杂度是O(n),但如果使用哈希表......
  • CS 61A Fall 2020 起步
    今天在曹大的知识星球立了一个flag,如下: 为什么会想到立这个flag呢?自己从本科的时候,就对计算机“感兴趣”,考研的时候选择了国内计算机名校的计算机专业,但是在读研期间写的代码并不多,没有从写代码中获得持续的正反馈。去年,我入职了一家国企,从事软件开发工作,刚入职的时候就开......
  • 2024.9.1_ChatGPT镜像列表
    收集自网络,更新于2024.9.1ChatGPT国内镜像ChatGPT外国镜像......
  • 2024-09-17-生活在Kubernetes中的Springboot
    Springboot和Kubernetes中的很多功能都是重叠的,SpringCloud重合的就更多了。不过我还是希望尽可能采用微服务及服务网格这套思路,应用层做轻,SpringCloud就不用了,重合的部分也尽可能用Kubernetes的功能。配置中心Kubernetes本身提供了对配置中心的支持,不需要再使用Apollo之类的工......