当前位置: 首页 > 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则是一层一层地展开。…...

# 发散创新:用Python打造自动化渗透测试工具链,从扫描到利用的全流程实战在网络安全攻防对抗中,**自动化渗透测试工

发散创新&#xff1a;用Python打造自动化渗透测试工具链&#xff0c;从扫描到利用的全流程实战 在网络安全攻防对抗中&#xff0c;自动化渗透测试工具正逐步成为红队成员和安全研究人员的核心利器。传统工具如Nmap、Burp Suite虽强大&#xff0c;但缺乏灵活定制能力&#xff1b…...

Scarab:空洞骑士模组管理效率提升83%的智能工具

Scarab&#xff1a;空洞骑士模组管理效率提升83%的智能工具 【免费下载链接】Scarab An installer for Hollow Knight mods written in Avalonia. 项目地址: https://gitcode.com/gh_mirrors/sc/Scarab 如何解决模组管理难题&#xff1f;3大创新让你告别手动配置烦恼 对…...

从4G到RedCap:手把手教你升级老旧工业设备的无线通信模块(附功耗测试数据)

从4G到RedCap&#xff1a;工业设备无线通信模块升级实战指南 在工业物联网快速发展的今天&#xff0c;老旧设备的通信模块升级成为许多工厂面临的现实挑战。传统4G模块虽然稳定可靠&#xff0c;但面对5G时代RedCap技术带来的低功耗、低成本优势&#xff0c;升级改造已成为提升设…...

STM32F103引脚功能全解析:从供电到通信接口的实战配置指南

STM32F103引脚功能全解析&#xff1a;从供电到通信接口的实战配置指南 在嵌入式系统开发中&#xff0c;STM32F103系列微控制器因其出色的性能和丰富的外设资源&#xff0c;成为众多开发者的首选。这款基于ARM Cortex-M3内核的MCU&#xff0c;不仅具备72MHz的主频&#xff0c;还…...

LiuJuan Z-Image Generator参数详解:CFG Scale=2.0与12步生成高质量人像

LiuJuan Z-Image Generator参数详解&#xff1a;CFG Scale2.0与12步生成高质量人像 想用AI生成一张惊艳的人像照片&#xff0c;却发现要么细节模糊&#xff0c;要么风格怪异&#xff0c;怎么调参数都达不到理想效果&#xff1f;如果你也遇到过类似问题&#xff0c;那今天这篇文…...

Llama-3.2V-11B-cot部署案例:中小企业低成本构建AI图文分析工作台

Llama-3.2V-11B-cot部署案例&#xff1a;中小企业低成本构建AI图文分析工作台 1. 项目概述 Llama-3.2V-11B-cot是基于Meta最新多模态大模型开发的专业级视觉推理工具&#xff0c;专为中小企业打造的低成本AI图文分析解决方案。该工具针对双卡RTX 4090环境进行了深度优化&…...

JDK17下Lombok报错?手把手教你解决IllegalAccessError问题(附最新版本配置)

JDK17与Lombok兼容性实战&#xff1a;彻底解决IllegalAccessError的终极指南 最近在将项目迁移到JDK17时&#xff0c;不少开发者反馈遇到了一个棘手的错误&#xff1a;java.lang.IllegalAccessError&#xff0c;特别是与Lombok相关的模块访问问题。这个错误看似简单&#xff0c…...

3大核心能力重新定义macOS炉石传说对战体验:HSTracker全方位辅助系统解析

3大核心能力重新定义macOS炉石传说对战体验&#xff1a;HSTracker全方位辅助系统解析 【免费下载链接】HSTracker A deck tracker and deck manager for Hearthstone on macOS 项目地址: https://gitcode.com/gh_mirrors/hs/HSTracker HSTracker是一款专为macOS平台设计…...

OpenClaw对接GLM-4.7-Flash:模型版本管理指南

OpenClaw对接GLM-4.7-Flash&#xff1a;模型版本管理指南 1. 为什么需要关注模型版本管理 上周我在调试一个自动化文档处理流程时&#xff0c;遇到了一个奇怪的现象&#xff1a;同样的OpenClaw脚本&#xff0c;前一天还能完美运行的文档摘要功能&#xff0c;第二天突然开始输…...

OpenClaw+GLM-4.7-Flash:智能读书笔记生成

OpenClawGLM-4.7-Flash&#xff1a;智能读书笔记生成 1. 为什么需要自动化读书笔记 作为一名技术从业者&#xff0c;我常年保持每周至少阅读两本专业书籍的习惯。但最困扰我的不是阅读本身&#xff0c;而是如何高效整理书中精华内容。过去我尝试过各种笔记工具&#xff0c;从…...