ajax part4

news2024/9/26 15:03:04

图片上传

<!DOCTYPE html>
<lang="en">

    <head>
        cmeta charset="UTF-8''>
        <meta http-equiv="X-UA-Compatible'b content=" IE=edge">
        <meta name="viewportR content=" wiclth=devic6-widths initial-scale=l. 0">
        图片上传
    </head>

    <body>
        <!--文件选择元素 -->
        <input type="file" class="upload">
        <script src="https://cdn・jsdelivr.A@t/npm/axios/dist/axios・Min.js"></script>
        <script>
            /* 目标:图片上传,显东到网页上
            ■ 1.获前图片文件
            ♦ 2.使用FormData携带图片文件
            ■ 3.提交到股务器,获取图片url网址使用*/
            //文件选择元素->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>
    </body>

一个新用法,如何更换背景

for:关联对象的ID

document.querySelector('.bg-ipt').addEventListener('change', e => {
    //1.选择图片上传,设置body背景
    console.log(e.target.files[0])
    const fd = new FormData()
    fd.append('img', e.target.files[0])
    axios({
        url: 'http://hmajax.itheima.net/api/uploadimg',
        method: 'POST',
        data: fd

    }).then(result => {
        const imgUrl = result.data.data.url
        document.body.style.backgroundImage = `url(${imgUrl})`
        //2,上传成功时,"保存"图片url网址
        localStorage.setItem('bgImg', imgUrl)
    })
})
// 3.网页运行后,"获取"url网址使用
const bgUrl = localStorage.getItem('bgImg')
console.log(bgUrl)
//本地有背景图地址才设置
bgUrl && (document.body.style.backgroundImage = `url(${bgUrl})`)

个人信息设置信息渲染

data的data有用户数据

//1.1获取用户的数据
axios({
    url: 'http:/hmajax.itheima.net/api/settings',
    params: {
        creator: '播仔'
    }
}).then(result => {
    const userObj = result.data.data
    //1.2回显数据到标签上
    Object.keys(userObj).forEach(key => {
        if (key == 'avatar') {
            //赋予默认头像
            document.querySelector('.prew').src = userObj[key]
        } else if (key == 'gender') {
            //赋予默认性别
            //获取性别单选框:[男radio元素,女radio元素]
            const gRadioList = document.querySelectorAll('.gender')
            //获取性别数字:0男,1女
            const gNum = userObj[key]
            //通过性别数字,作为下标,找到对应性别单选框,设置选中状态
            gRadioList[gNum].checked = true
        } else {
            //赋予默认内容
            document.querySelector(`.${key}`).value = userObj[key]
        }
    })
})

头像修改

获取图像对象,准备数据,上传到服务器,将返回的URL网址渲染到页面上

form-data表单数据

服务器报错,可以检查一下fd的属性名是不是和要求的data属性名相同

/**
* 目标2:修改头像
    * 2.1获取头像文件
        * 2.2提交服务器并更新头像
            ** */
// 文件选择元素 -> change事件
document.querySelector('.upload').addEventListener('change', e => {
    //2.1获取头像文件
    console.log(e.target.files[0])
    const fd = new FormData()
    fd.append('avatar', e.target.files[0])
    fd.append('creator', creator)
    // 2.2提交服务器并更新头像
    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

    })
})

信息修改

这段思路很好,axios自带生成json文件和解析JSON文件,请求的时候参数是对象类型,但是提交给服务器axios会自动转换为JSON类型,响应返回的时候相反,自动解析JSON类型

其实都是按照后端提供的接口要求编写,因为userobj不是数组而是对象
关于那个展开的,我的理解是当时那个展开没有将对象一次给完,这里能一次给完所有的值
展开或对象 都行 演示给你看 怕到公司看不懂别人写的
上次展开运算符是还有一个数据单独写了  这次数据都完全在userObj里直接给data就行了
/**   
    * 目标3:提交表单
        * 3.1收集表单信息
            * 3.2提交到服务器保存
                **/
//保存修改 -> 点击
document.querySelector('.submit').addEventListener('click', () => {
    // 3.1收集表单信息
    const userForm = document.queryselector('.user-form')
    const userObj = serialize(userForm, { hash: true, empty: true })
    userObj.creator = creator
    //性别数字字符串,转成数字类型
    userObj.gender = +userObj.gender
    console.log(userObj)
    // 3.2提交到服务器保存
    axios({
        url: 'http:〃hmajax.itheima.net/api/setti/gs',
        method: 'PUT',
        data: userObj
    })
})

提示框

<div class="toast" data-bs-delay ="1500">
    提示框内容
</div>
const toastDom = document, queryselector ('css 选择器')
const toast = new bootstrap.Toast(toastDom)
//
toast.show()

使用modal其实就是一个大一点的提示框,但是对于提示信息不需要这么大

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1992701.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

做报表用什么工具?不想再用Excel了!!!

一、什么是中国式报表&#xff1f; 不知道大家现在还是使用Excel来制作报表&#xff0c;然后跟领导汇报工作吗&#xff1f;虽然Excel功能很强大&#xff0c;但是用Excel做过中国式报表的小伙伴一定知道它的制作过程有多复杂。 中国式报表可以用一句话简单概括&#xff1a;格式…

C++笔试强训11

文章目录 一、选择题1-5题6-10题 二、编程题题目一题目二 一、选择题 1-5题 A. 不是任何一个函数都可定义成内联函数&#xff1a;这是正确的。因为内联函数需要在编译时展开&#xff0c;如果函数体过大或包含复杂的控制结构&#xff08;如循环、递归等&#xff09;&#xff0c…

Linux/C 高级——分文件编程

1.头文件&#xff1a;.h结尾的文件 头文件引用、宏定义、重命名typedef、结构体、共用体、枚举的定义、函数声明、外部引用extern。 一般全局变量不会定义在头文件中 2.源文件&#xff1a;.c结尾的文件 包含main函数的.c文件&#xff1a;main函数 包含子函数的.c文件&#xff1…

【LLM】-17-会话存储

目录 1、会话存储类型 2、版本代码说明 3、对话缓存存储 3.1、示例代码 3.2、响应response说明 3.3、流式输出 3.4、添加提示词模板 3.5、指定回答语言 4、限制令牌数存储 4.1、trim_messages 4.1.1、自定义tokens计数器 4.1.2、自定义tokens计数器 4.2、完整chat…

HookNet- 用于病理全切片图像的多分辨率语义分割模型|顶刊精析·24-08-08

小罗碎碎念 今天分享的这篇文章是关于一种名为HookNet的新型语义分割模型&#xff0c;它专为病理学全切片图像设计&#xff0c;于2021年发表于《Med Image Anal》&#xff0c;目前IF10.7。 作者角色姓名单位&#xff08;中文翻译&#xff09;第一作者Mart van Rijthoven荷兰Ra…

Spring-boot 集成 SocketIO(看这一篇就够了)

1 前言 1.1 什么是 SocketIO ? Socket.IO 是一个可以在浏览器与服务器之间实现实时、双向、基于事件的通信的工具库。 Socket.IO 能够在任何平台、浏览器或设备上运行,可靠性和速度同样出色。 1.2 websocket和socket.io区别&#xff1f; websocket a&#xff1a;一种让客户…

video标签,去除上下默认边距

不知道为什么&#xff0c;video标签上下会有空白 清除方法 style"width 100%; height100%; object-fit: fill"

校园二手物品交易网站/校园闲置物品交易系统

摘 要 本文论述了校园二手物品交易网站的设计和实现&#xff0c;该网站从实际运用的角度出发&#xff0c;运用了计算机网站设计、数据库等相关知识&#xff0c;网络和JSP技术、SSM框架Mysql数据库设计来实现的&#xff0c;网站主要包括学生注册、学生登录、浏览商品、搜索商品…

Vue+Element Plus后台管理主界面搭建实现

​ 续接Django REST Framework&#xff0c;使用Vite构建Vue3的前端项目 1. 后台管理系统主界面框架搭建 后台系统主界面搭建 新建后台管理文件目录 完成后台整体布局 // 1.主界面 index.vue<script setup lang"ts"></script><template><el-…

应用层HTTP协议

文章目录 应用层HTTP协议1、HTTP协议概念2、URL&#xff08;统一资源定位符&#xff09;2.1、URL的encode&#xff08;编码&#xff09;和decode&#xff08;解码&#xff09; 3、HTTP请求和响应报头格式3.1、请求报头3.2、响应报头 4、HTTP的方法4.1、GET方法4.2、POST方法4.3…

生成模型VAE

VAE likelihood-basedELBOVAESGVB估计器和AEVB算法重参数化 likelihood-based likelihood-based generative models是生成模型的一类范式&#xff0c;通过最大化所有观测数据的似然函数来学习模型参数。 该怎么去理解likelihood-based&#xff0c;基于似然的生成模型&#xf…

互联网重构“规则制定权”,周期性谋咒开始轮转!

周期“魔咒”又开始轮转了。 产业趋势叠加资本周期&#xff0c;使得任何产业都有其周期性规律&#xff0c;传统资源产业是如此&#xff0c;科技产业亦非例外。 刚刚迎来30周年庆的中国互联网赛道就正处于新一轮小周期的节点。随着移动用户量逐渐被开发利用至阶段性顶峰&#…

学习c语言第24天(练习)

编程题 第一题 最大公约数最小公倍数求和 //求最大公约数和最小公倍数之和 //暴力求解 //int main() //{ // int n 0; // int m 0; // while (scanf("%d %d", &n, &m)2) // { // int min n < m ? n : m; // int max n > m ? n : m; //…

原神4.8版本角色数据

<!DOCTYPE html> <html lang"zh-CN"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>原神4.8版本角色数据</title><style>…

【浏览器插件】Chrome扩展V3版本

前言&#xff1a;Chrome从2022年6月开始&#xff0c;新发布插件只接受V3版。2024年V2版已从应用商店下架。 浏览器扩展插件开发API文档 chrome官网&#xff08;要翻墙&#xff09;&#xff1a; https://developer.chrome.com/docs/extensions/mv3 MDN中文&#xff1a;https:/…

gitee拉取项目,提交代码

1&#xff0c;安装git 2&#xff0c;gitee配置成员仓库权限 3&#xff0c;克隆项目 git clone gitgitee.com:sky474775788/Python_API_AUTO.git 4&#xff0c;配置用户信息 git config --global user.name 林俊xxx git config --global user.email ohnxxxsee1xxx.com 5&…

机器学习·L2W4-决策树

决策树 从根节点的所有示例开始计算所有可能特征的分割信息增益&#xff0c;并选择信息增益最高的特征根据所选特征分割数据集&#xff0c;并创建树的左分支和右分支不断重复分割过程&#xff0c;直到满足停止条件 信息增益 也可以理解为信息熵的减少 p p p是结果为positive…

住宅代理和数据中心代理:指纹浏览器用哪个更安全?

在当今的数字时代&#xff0c;确保您的在线安全至关重要。这就是住宅和数据中心代理发挥作用的地方&#xff0c;它们可以保护您的身份和个人信息。指纹浏览器解决了账号所在环境指纹参数隔离的安全问题&#xff0c;而IP解决环境的定位与隔离问题&#xff0c;就像Maskfog中提供的…

洛伦兹微分方程与混沌理论

前言 这一段时间在看书中关于深度学习与神经网络的内容&#xff0c;其中有一节介绍神经网络用于预测洛伦兹微分方程的数值解&#xff0c;还提到了“吸引子”这一概念&#xff0c;当时也没太理解是什么&#xff0c;下午搜集了一本书上关于混沌理论的介绍——《混沌的本质》。 这…

【线性回归】——解决运筹优化类问题

目录 文章目录 前言 一、模型原理 1.线性规划模型的三要素 &#x1f60f;&#x1f60f;&#x1f60f; 2.模型特点 3.线性规划的表现形式 二、模型建立步骤 1.找决策变量 2.确定目标函数 3.找到约束条件 4.运用Matlab中的Linprog函数 总结 前言 在实际生活应用中&#xff0c;我…