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

AJAX案例——图片上传个人信息操作

黑马程序员视频地址:

AJAX-Day02-11.图片上传https://www.bilibili.com/video/BV1MN411y7pw?vd_source=0a2d366696f87e241adc64419bf12cab&spm_id_from=333.788.videopod.episodes&p=26

图片上传

  <!-- 文件选择元素 --><input type="file" class="upload">
    //绑定改变事件document.querySelector(".upload").addEventListener("change", e => {//获取图片文件const imgFile = e.target.files[0]    //图片资源保存在files中//使用 FormData 携带图片文件    因为服务器要求以form-data(表单)的样式上传const imgForm = new FormData()imgForm.append("img", imgFile)    //服务器要求将图片资源放在表单中的img属性里提交//提交到服务器axios({url: "https://hmajax.itheima.net/api/uploadimg",method: "POST",data: imgForm}).then(result => {imgUrl = result.data.data.url    //返回的图片链接})})

案例:网站换肤

document.querySelector(".bg-ipt").addEventListener("change", e => {//将图片挂载到表单中的img属性上const imgDom = new FormData() //创建表单实例对象imgDom.append("img", e.target.files[0])//将图片数据传给表单的img属性//上传到服务器axios({url: "https://hmajax.itheima.net/api/uploadimg",method: "POST",data: imgDom}).then(result => {const bgUrl = result.data.data.url//设置为body背景图document.body.style.backgroundImage = `url(${bgUrl})`//保存图片链接到本地存储localStorage.setItem("bgUrl", bgUrl)})
})//从本地存储中读取上一次上传的背景图并加载到页面上
const bgUrl = localStorage.getItem("bgUrl")
bgUrl && (document.body.style.backgroundImage = `url(${bgUrl})`) //使用逻辑中断判断是否要执行加载背景图代码

个人信息设置

1.渲染数据

//获取用户数据
const creator = "USER_A001"
axios({url: "https://hmajax.itheima.net/api/settings",params: {creator}
}).then(result => {//渲染数据const dataObj = result.data.data  /** * dataObj数据详情{"avatar": "http://hmajax.itheima.net/avatar/avatar2.png","nickname": "itheima","email": "itheima@itcast.cn","desc": "我是USER_A001","gender": 0}* Object.keys(dataObj)数据详情,["avatar","nickname","email","desc","gender"]*/Object.keys(dataObj).forEach(key => {if(key === "avatar") //avatar的属性值设置不同,应单独处理{document.querySelector(".prew").src = dataObj[key]}else if(key === "gender")  //gender无法直接赋值,也应单独处理{const gender = document.querySelectorAll(".gender")    //获取两种选项的控件/** * gender数据:{"0": {男选项控件},"1": {女选项控件}}*/const numData = dataObj[key] //获取dataObj属性中的gender值(0 or 1)gender[numData].checked = true  //gender[numData]相应获取控件}else{document.querySelector(`.${key}`).value = dataObj[key]    //其他数据的渲染}})
})

2.修改头像

//上传图片
document.querySelector(".upload").addEventListener("change", e => { //改变事件
const newAvatar = e.target.files[0] //上传的图片数据
const avatarDom = new FormData()  //创建表单实例对象
avatarDom.append("avatar", newAvatar) //将图片数据添加到表单实例对象上
avatarDom.append("creator", creator)  //将用户代号添加到表单实例对象上
axios({url: "https://hmajax.itheima.net/api/avatar",method: "PUT",data: avatarDom
}).then(result => {//获取服务器返回的图片链接const newAvatarimg = result.data.data.avatar//将新的头像回显到页面中document.querySelector(".prew").src = newAvatarimg
})
})

3.修改信息

//修改个人信息
document.querySelector(".submit").addEventListener("click", () => {//收集表单数据const formObj = document.querySelector(".user-form")const newUserForm = serialize(formObj, {hash: true, empty: true})newUserForm.creator = creator //添加用户标识属性newUserForm.gender = +newUserForm.gender //将gender属性转化为数字//提交数据axios({url: "https://hmajax.itheima.net/api/settings",method: "PUT",data: newUserForm})
})

提示框

//HTML代码
<!-- toast 提示框 --><div class="toast my-toast" data-bs-delay="1500">    <!--data-bs-delay持续时间ms--><div class="toast-body"><div class="alert alert-success info-box">操作成功</div></div></div>//JS代码const myToastDom = document.querySelector(".my-toast")const myToast = new bootstrap.Toast(myToastDom)myToast.show()

相关文章:

AJAX案例——图片上传个人信息操作

黑马程序员视频地址&#xff1a; AJAX-Day02-11.图片上传https://www.bilibili.com/video/BV1MN411y7pw?vd_source0a2d366696f87e241adc64419bf12cab&spm_id_from333.788.videopod.episodes&p26 图片上传 <!-- 文件选择元素 --><input type"file"…...

Day35-【13003】短文,什么是双端队列?栈和队列的互相模拟,以及解决队列模拟栈时出栈时间开销大的方法

文章目录 第三节进一步讨论栈和队列双端队列栈和队列的相互模拟使用栈来模拟队列类型定义入队出队判空&#xff0c;判满 使用队列来模拟栈类型定义初始化清空操作判空&#xff0c;判满栈长度输出入栈出栈避免出栈时间开销大的方法 第三节进一步讨论栈和队列 双端队列 假设你芷…...

力扣 55. 跳跃游戏

&#x1f517; https://leetcode.cn/problems/jump-game 题目 给一个数组 nums&#xff0c;最开始在 index 0&#xff0c;每次可以跳跃的区间是 0-nums[i]判断是否可以跳到数组末尾 思路 题解是用贪心&#xff0c;实际上模拟也可以过遍历可以到达的下标&#xff0c;判断其可…...

深入剖析 HTML5 新特性:语义化标签和表单控件完全指南

系列文章目录 01-从零开始学 HTML&#xff1a;构建网页的基本框架与技巧 02-HTML常见文本标签解析&#xff1a;从基础到进阶的全面指南 03-HTML从入门到精通&#xff1a;链接与图像标签全解析 04-HTML 列表标签全解析&#xff1a;无序与有序列表的深度应用 05-HTML表格标签全面…...

本地快速部署DeepSeek-R1模型——2025新年贺岁

一晃年初六了&#xff0c;春节长假余额马上归零了。今天下午在我的电脑上成功部署了DeepSeek-R1模型&#xff0c;抽个时间和大家简单分享一下过程&#xff1a; 概述 DeepSeek模型 是一家由中国知名量化私募巨头幻方量化创立的人工智能公司&#xff0c;致力于开发高效、高性能…...

MVC 文件夹:架构之美与实际应用

MVC 文件夹:架构之美与实际应用 引言 MVC(Model-View-Controller)是一种设计模式,它将应用程序分为三个核心组件:模型(Model)、视图(View)和控制器(Controller)。这种架构模式不仅提高了代码的可维护性和可扩展性,而且使得开发流程更加清晰。本文将深入探讨MVC文…...

Redis --- 秒杀优化方案(阻塞队列+基于Stream流的消息队列)

下面是我们的秒杀流程&#xff1a; 对于正常的秒杀处理&#xff0c;我们需要多次查询数据库&#xff0c;会给数据库造成相当大的压力&#xff0c;这个时候我们需要加入缓存&#xff0c;进而缓解数据库压力。 在上面的图示中&#xff0c;我们可以将一条流水线的任务拆成两条流水…...

如何确认设备文件 /dev/fb0 对应的帧缓冲设备是开发板上的LCD屏?如何查看LCD屏的属性信息?

要判断 /dev/fb0 是否对应的是 LCD 屏幕&#xff0c;可以通过以下几种方法&#xff1a; 方法 1&#xff1a;使用 fbset 命令查看帧缓冲设备的属性信息 Linux 的 帧缓冲设备&#xff08;Framebuffer&#xff09; 通常在 /dev/fbX 下&#xff0c;/dev/fb0 一般是主屏幕&#xff…...

C++多线程编程——基于策略模式、单例模式和简单工厂模式的可扩展智能析构线程

1. thread对象的析构问题 在 C 多线程标准库中&#xff0c;创建 thread 对象后&#xff0c;必须在对象析构前决定是 detach 还是 join。若在 thread 对象销毁时仍未做出决策&#xff0c;程序将会终止。 然而&#xff0c;在创建 thread 对象后、调用 join 前的代码中&#xff…...

AI与SEO关键词的完美结合如何提升网站流量与排名策略

内容概要 在当今数字营销环境中&#xff0c;内容的成功不仅依赖于高质量的创作&#xff0c;还包括高效的关键词策略。AI与SEO关键词的结合&#xff0c;正是这一趋势的重要体现。 AI技术在SEO中的重要性 在数字营销领域&#xff0c;AI技术的引入为SEO策略带来了前所未有的变革。…...

保姆级教程Docker部署Kafka官方镜像

目录 一、安装Docker及可视化工具 二、单节点部署 1、创建挂载目录 2、运行Kafka容器 3、Compose运行Kafka容器 4、查看Kafka运行状态 三、集群部署 在Kafka2.8版本之前&#xff0c;Kafka是强依赖于Zookeeper中间件的&#xff0c;这本身就很不合理&#xff0c;中间件依赖…...

解析PHP文件路径相关常量

PHP文件路径相关常量包括以下几个常量&#xff1a; __FILE__&#xff1a;表示当前文件的绝对路径&#xff0c;包括文件名。 __DIR__&#xff1a;表示当前文件所在的目录的绝对路径&#xff0c;不包括文件名。 dirname(__FILE__)&#xff1a;等同于__DIR__&#xff0c;表示当前…...

WPS计算机二级•幻灯片的配色、美化与动画

听说这是目录哦 配色基础颜色语言❤️使用配色方案&#x1fa77;更改PPT的颜色&#x1f9e1;PPT动画添加的原则&#x1f49b;PPT绘图工具&#x1f49a;自定义设置动画&#x1f499;使用动画刷复制动画效果&#x1fa75;制作文字打字机效果&#x1f49c;能量站&#x1f61a; 配色…...

C#,shell32 + 调用控制面板项(.Cpl)实现“新建快捷方式对话框”(全网首发)

Made By 于子轩&#xff0c;2025.2.2 不管是使用System.IO命名空间下的File类来创建快捷方式文件&#xff0c;或是使用Windows Script Host对象创建快捷方式&#xff0c;亦或是使用Shell32对象创建快捷方式&#xff0c;都对用户很不友好&#xff0c;今天小编为大家带来一种全新…...

单纯信息展示的站点是否可以用UML建模

凌钦亮 More options Aug 7 2010, 10:36 am 现在社会上大量的网站需求都还只是用于单纯的企业信息展示&#xff0c;那此种网站是否有必要用UML 建模呢&#xff1f;业务用例图的一个个用例是用来卖的&#xff0c;但是他只有信息展示这个需 求&#xff0c;我是否在划分业务用例…...

FinRobot:一个使用大型语言模型的金融应用开源AI代理平台

“FinRobot: An Open-Source AI Agent Platform for Financial Applications using Large Language Models” 论文地址&#xff1a;https://arxiv.org/pdf/2405.14767 Github地址&#xff1a;https://github.com/AI4Finance-Foundation/FinRobot 摘要 在金融领域与AI社区间&a…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】2.19 线性代数核武器:BLAS/LAPACK深度集成

2.19 线性代数核武器&#xff1a;BLAS/LAPACK深度集成 目录 #mermaid-svg-yVixkwXWUEZuu02L {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-yVixkwXWUEZuu02L .error-icon{fill:#552222;}#mermaid-svg-yVixkwXWUEZ…...

开发板目录 /usr/lib/fonts/ 中的字体文件 msyh.ttc 的介绍【微软雅黑(Microsoft YaHei)】

本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸扩展。 本文是博文 https://blog.csdn.net/wenhao_ir/article/details/145433648 的延伸扩展。 问&#xff1a;运行 ls /usr/lib/fonts/ 发现有一个名叫 msyh.ttc 的字体文件&#xff0c;能介绍…...

Love Tester:探索爱情的深度与维度

爱情是什么&#xff1f;是相互帮助、耐心、理解、鼓励、保护、可靠和牺牲。Love Tester 通过先进的算法&#xff0c;分析名字的兼容性和关系的潜力&#xff0c;帮助你计算爱情匹配的准确性。 相互帮助&#xff1a;在伴侣遇到困难时伸出援手&#xff0c;这是爱情的体现。耐心&a…...

BFS(广度优先搜索)——搜索算法

BFS&#xff0c;也就是广度&#xff08;宽度&#xff09;优先搜索&#xff0c;二叉树的层序遍历就是一个BFS的过程。而前、中、后序遍历则是DFS&#xff08;深度优先搜索&#xff09;。从字面意思也很好理解&#xff0c;DFS就是一条路走到黑&#xff0c;BFS则是一层一层地展开。…...

异步、流式与批处理:LangChain 高性能调优

系列导读 你现在看到的是《LangChain 实战与工程化落地:从原型到生产环境的完整指南》的第 8/10 篇,当前这篇会重点解决:通过异步、流式与批处理技术,将 LangChain 应用响应速度提升 10 倍以上。 上一篇回顾:第 7 篇《RAG 实战:LangChain + 向量数据库构建知识问答系统…...

终极指南:在Windows上无需模拟器安装安卓应用的完整教程

终极指南&#xff1a;在Windows上无需模拟器安装安卓应用的完整教程 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为安卓模拟器的臃肿和卡顿烦恼吗&#xff1f;今…...

3步终极指南:用开源TCC-G15彻底解决Dell G15散热难题

3步终极指南&#xff1a;用开源TCC-G15彻底解决Dell G15散热难题 【免费下载链接】tcc-g15 Thermal Control Center for Dell G15 - open source alternative to AWCC 项目地址: https://gitcode.com/gh_mirrors/tc/tcc-g15 你是否正在为Dell G15笔记本的过热问题而烦恼…...

超高清电视普及困境解析:从技术参数到生态系统的完整思考

1. 超高清电视的“非主流”开局&#xff1a;一场始于2013年的行业迷思 如果你在2013年初的拉斯维加斯CES展上&#xff0c;听到关于“Ultra HDTV”&#xff08;超高清电视&#xff0c;后文简称UHDTV&#xff09;的喧嚣&#xff0c;感觉就像身处一场盛大的交响乐彩排现场——乐手…...

APK Installer终极指南:如何在Windows上快速安装安卓应用?

APK Installer终极指南&#xff1a;如何在Windows上快速安装安卓应用&#xff1f; 【免费下载链接】APK-Installer An Android Application Installer for Windows 项目地址: https://gitcode.com/GitHub_Trending/ap/APK-Installer 还在为Windows上安装安卓应用而烦恼吗…...

2026购物机器人操作指南:工作原理与使用教程

在电商自动化和AI技术不断发展的背景下&#xff0c;购物机器人&#xff08;Shopping Bot&#xff09;正在成为越来越多人关注的工具。无论是用于限量商品抢购、价格监控&#xff0c;还是电商数据采集&#xff0c;它都在改变传统的线上购物方式。本文将从基础概念出发&#xff0…...

手把手教你用Makerbase VESC遥控你的电机:从硬件连接到APP配置的保姆级避坑指南

Makerbase VESC遥控电机全流程实战&#xff1a;从硬件对接到信号调优的深度指南 第一次拿到Makerbase VESC套件时&#xff0c;看着密密麻麻的接口和参数选项确实让人头皮发麻。作为过来人&#xff0c;我完全理解那种既兴奋又忐忑的心情——兴奋在于终于可以亲手打造自己的智能…...

毫米波ISAC系统设计与FPGA实现关键技术

1. 毫米波ISAC系统设计背景与核心挑战在车联网和自动驾驶场景中&#xff0c;毫米波技术因其大带宽特性同时满足了高精度环境感知与高速数据传输的双重需求。传统方案采用雷达与通信系统独立部署&#xff0c;导致硬件资源浪费和频谱效率低下。我们基于IEEE 802.11ad标准设计的雷…...

如何为iOS 14.0-16.6.1设备安装TrollStore:TrollInstallerX完整指南

如何为iOS 14.0-16.6.1设备安装TrollStore&#xff1a;TrollInstallerX完整指南 【免费下载链接】TrollInstallerX A TrollStore installer for iOS 14.0 - 16.6.1 项目地址: https://gitcode.com/gh_mirrors/tr/TrollInstallerX 如果你正在寻找一种可靠且简单的方法在i…...

如何快速构建Python量化分析系统:5步掌握通达信数据接口

如何快速构建Python量化分析系统&#xff1a;5步掌握通达信数据接口 【免费下载链接】mootdx 通达信数据读取的一个简便使用封装 项目地址: https://gitcode.com/GitHub_Trending/mo/mootdx MOOTDX是一个基于Python的高效通达信数据接口封装&#xff0c;专为量化投资和数…...