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

ajax关于axios库的运用小案例

AJAX案例

图书管理

四大功能:

  1. 展示图书
  2. 删除图书
  3. 编辑图书信息
  4. 新增图书

步骤

1.bootstrap弹窗来实现新增和编辑图书时出现的弹窗

有两种方案:

a.可以用自带的属性来进行弹窗的显示和隐藏

b.可以通过JS进行控制,此操作可以进行自定义,比如在隐藏窗口的同时获取表单元素,并进行渲染页面

a方案

在想要进行隐藏和显示的按钮中增加自带的属性

b方案

//1.创建弹窗对象const box = document.querySelector('.name-box');const modal = new bootstrap.Modal(box);//2.绑定点击事件并调用相关显示和隐藏的函数//2.1获取需要绑定点击事件的对象document.querySelector('.edit-btn').addEventListener('click', () => {modal.show();})document.querySelector('.save-btn').addEventListener('click', () => {//获取表单信息并打印const data = document.querySelector('.username').value;console.log('username', data);modal.hide();})

2.渲染列表

a.获取数据

b.渲染数据

图片上传

步骤

  1. 获取图片文件
    • 为input绑定change事件
  2. 使用FormData携带图片文件 – 由于传到服务器的数据需要是form-data,所以需要进行转换,而img为服务器接口指定的参数名
  3. 提交到服务器,获取图片url网址使用

两个知识点

  • 获取input上传的文件数据:e.target.files – 获取的是一个文件列表(伪数组),可以通过下标指定想要的数组
  • 提交到服务器的数据需要是表单数据,则要通过FormData来实现对数据的包裹–const filedata = new FormData(); filedata.append('img', e.target.files[0]);

代码

/*** 目标:图片上传,显示到网页上*  1. 获取图片文件*  2. 使用 FormData 携带图片文件*  3. 提交到服务器,获取图片url网址使用*///1.1. 获取图片文件//为input绑定change事件document.querySelector('.upload').addEventListener('change', e => {console.log(e.target.files[0]);//1.2 使用 FormData 携带图片文件 -- 由于传到服务器的数据需要是form-data,所以需要进行转换,而img为服务器接口指定的参数名const filedata = new FormData();filedata.append('img', e.target.files[0]);//1.3 提交到服务器,获取图片url网址使用axios({url: 'http://hmajax.itheima.net/api/uploadimg',method: 'POST',data: filedata}).then(result => {console.log(result);const myimg = document.querySelector('.my-img');const imgurl = result.data.data.url;myimg.src = imgurl;})})

网页背景更换

步骤

  1. 选择图片上传,获取文件数据,并转换为表单数据格式
  2. 提交到服务器,并获取返回的url地址,赋值给body的背景图style
  3. 将url地址存储到本地以便下次访问网站的时候可以对body的背景图style进行赋值(需要判断本地是否存储了数据)

代码

/*** 目标:网站-更换背景*  1. 选择图片上传,设置body背景*  2. 上传成功时,"保存"图片url网址*  3. 网页运行后,"获取"url网址使用* */
//1.1为更换背景的表单元素绑定change事件
document.querySelector('.bg-ipt').addEventListener('change', e => {console.log(e.target.files[0]);//将文件数据追加到新建的formdata中const Filedata = new FormData();Filedata.append('img', e.target.files[0]);//将该表单数据上传到服务器axios({url: 'http://hmajax.itheima.net/api/uploadimg',method: 'POST',data: Filedata}).then(result => {//获取返回的url地址console.log(result.data.data.url);//给body的背景图赋值const imgUrl = result.data.data.url;document.body.style.backgroundImage = `url(${imgUrl})`;//将该url传入本地存储,以便刷新后依旧可以对body背景图进行赋值localStorage.setItem('bgImg', imgUrl);})
})
//网页运行后,通过本地存储进行背景图赋值,但是要注意第一次进入网站时没有设置背景图
const imgUrl = localStorage.getItem('bgImg');
console.log(imgUrl);
//判断是否存在imgUrl在进行赋值 通过逻辑与的逻辑中断特性imgUrl && (document.body.style.backgroundImage = `url(${imgUrl})`); //逻辑与的优先级高于“=” 

个人信息

步骤

  1. 信息渲染

    • 向服务器获取对应个人的信息

    • 根据服务器所给的数据与表单元素进行对比,将数据进行渲染

      每次网页运行都调用一次渲染函数,从服务器获取数据并将数据渲染到对应标签中

  2. 头像修改

    • 绑定change事件
    • 由于服务器要求,将文件数据和外号都追加到一个新建的表单数据中
    • 向服务器进行提交
    • 获取url网址,对头像的src重新进行赋值
  3. 表单修改

    • 为表单提交按钮绑定点击事件
    • 通过serialize快速获得表单信息
    • 根据服务器添加外号属性
    • 由于服务器要求的gender需要是数字型,因此进行修改
    • 将修改的表单数据提交到服务器
    • 重新调用渲染函数
  4. 操作成功提示

    • 获取提示框标签,并使用bootstrap内置的对象
    • 调用show()方法

新的方法

提示框对象Toast,bootstrap中的一个对象,需要在标签中内置类名toast,并且引入bootstrap相关的JavaScript文件

语法:

//html中的提示框
<!-- toast 提示框 --><div class="toast my-toast" data-bs-delay="1500"><div class="toast-body"><div class="alert alert-success info-box">操作成功</div></div></div>//js中的运用操作,何时调用show()方法//获取提示框标签,并使用bootstrap内置的对象const tiptoastDom = document.querySelector('.my-toast');const tiptoast = new bootstrap.Toast(tiptoastDom);//调用show()方法tiptoast.show();

代码

/*** 目标1:信息渲染*  1.1 获取用户的数据*  1.2 回显数据到标签上* */
//封装一个渲染函数,在运行的时候进行调用,以及修改头像或者表单元素内容的时候进行调用
//将外号作为一个常量进行声明,避免反复向服务器进行操作写错外号
const creator = '老吴';
function painthtml() {//向服务器获取对应个人的信息axios({url: 'http://hmajax.itheima.net/api/settings',method: 'GET',params: {creator}}).then(result => {console.log(result.data.data);//将数据进行渲染const objData = result.data.data;Object.keys(objData).forEach(key => {//根据服务器所给的数据与表单元素进行对比//如果当前的属性名为avatar,对头像的src属性进行赋值if (key === 'avatar') {document.querySelector('.prew').src = objData[key];} else if (key === 'gender') {//如果当前值为gender,对单选框进行赋值//获取单选框对象const whatGender = document.querySelectorAll('.gender');//由于服务器给的规则是0男1女,刚好和下标位置相符,因此可以直接通过下标直接赋值whatGender[objData[key]].checked = true;} else {//其他表单元素无需进行特殊操作,进行对其内容进行赋值document.querySelector(`.${key}`).value = objData[key];}})})}
//每次网页运行都调用一次渲染函数,从服务器获取数据并将数据渲染到对应标签中
painthtml();/*** 目标2:头像切换*  2.1 为对应表单元素绑定change事件*  2.2 获取表单中的文件数据,并按服务器的格式将数据传给服务器*  2.3 将返回的url地址赋值给对应的标签,进行赋值操作* *///绑定change事件
const imgFile = document.querySelector('.upload');
imgFile.addEventListener('change', e => {console.log(e.target.files);//由于服务器要求,将文件数据和外号都追加到一个新建的表单数据中const formdata = new FormData();formdata.append('avatar', e.target.files[0]);formdata.append('creator', creator);//向服务器进行提交axios({url: 'http://hmajax.itheima.net/api/avatar',method: 'PUT',data: formdata}).then(result => {//获取url网址console.log(result.data.data.avatar);document.querySelector('.prew').src = result.data.data.avatar;})
})//快速获取表单元素内容
// const form = document.querySelector('.user-form');
//     const formdata = serialize(form, { hash: true, empty: true });
//     const { avatar, desc, email, gender, nickname } = formdata; //对对象进行结构/*** 目标2:表单修改*  2.1 为对应表单元素绑定change事件*  2.2 获取表单中的文件数据,并按服务器的格式将数据传给服务器*  2.3 将返回的url地址赋值给对应的标签,进行赋值操作* */
//为表单提交按钮绑定点击事件
document.querySelector('.submit').addEventListener('click', () => {//通过serialize快速获得表单信息const form = document.querySelector('.user-form');const formdata = serialize(form, { hash: true, empty: true });//根据服务器添加外号属性formdata.creator = creator;//由于服务器要求的gender需要是数字型,因此进行修改formdata.gender = +formdata.gender;console.log(formdata);//将修改的表单数据提交到服务器axios({url: 'http://hmajax.itheima.net/api/settings',method: 'PUT',data: formdata}).then(result => {console.log(result);//目标4 提示框提示操作成功//获取提示框标签,并使用bootstrap内置的对象const tiptoastDom = document.querySelector('.my-toast');const tiptoast = new bootstrap.Toast(tiptoastDom);//调用show()方法tiptoast.show();//重新渲染页面painthtml();})
})

相关文章:

ajax关于axios库的运用小案例

AJAX案例 图书管理 四大功能&#xff1a; 展示图书删除图书编辑图书信息新增图书 步骤 1.bootstrap弹窗来实现新增和编辑图书时出现的弹窗 有两种方案&#xff1a; a.可以用自带的属性来进行弹窗的显示和隐藏 b.可以通过JS进行控制&#xff0c;此操作可以进行自定义&am…...

微搭低代码入门01变量

目录 1 变量的定义2 变量的赋值3 变量的类型4 算术运算符5 字符串的连接6 模板字符串7 检查变量的类型8 解构赋值8.1 数组的解构赋值8.2 对象的解构赋值 9 类型转换9.1 转换为字符串9.2 转换为数字9.3 转换为布尔值 总结 好些零基础的同学&#xff0c;在使用低代码的时候&#…...

盘点2024年10款视频剪辑,哪款值得pick!!

在这个短视频盛行的时代&#xff0c;如何让我们的故事更生动有趣呢&#xff1f;那就要对短视频进行修饰了。这就需要借助视频剪辑工具&#xff1a;而一款好的工具不仅仅是视频的“美颜”&#xff0c;更是创意的灵魂所在&#xff01;想象一下&#xff0c;运用一款功能齐全的剪辑…...

苹果手机照片批量删除:一键清理,释放空间

在数字化时代&#xff0c;iPhone不仅是我们沟通的桥梁&#xff0c;也是记录生活的重要工具。然而&#xff0c;随着时间的积累&#xff0c;手机中的照片数量不断增加&#xff0c;不仅占用大量存储空间&#xff0c;也让设备变得缓慢。苹果手机照片批量删除成为了一个普遍的需求。…...

《AI 大模型:重塑软件开发新生态》

《AI 大模型&#xff1a;重塑软件开发新生态》 一、AI 大模型引领软件开发新潮流二、AI 大模型在软件开发中的优势&#xff08;一&#xff09;提高开发效率&#xff08;二&#xff09;减少错误与提升质量&#xff08;三&#xff09;激发创新与拓展功能 三、AI 大模型在软件开发…...

uniapp(API-Promise 化)

一、异步的方法&#xff0c;如果不传入 success、fail、complete 等 callback 参数&#xff0c;将以 Promise 返回数据异步的方法&#xff0c;且有返回对象&#xff0c;如果希望获取返回对象&#xff0c;必须至少传入一项 success、fail、complete 等 callback 参数&#xff0c…...

【考研数学 - 数二题型】考研数学必吃榜(数二)

数学二 suhan, 2024.10 文章目录 数学二一、函数❗1.极限1.1求常见极限1.2求数列极限1.2.1 n项和数列极限1.2.2 n项连乘数列极限1.2.3 递推关系定义的数列极限 1.3确定极限式中的参数1.4无穷小量阶的比较 2.连续2.1判断是否连续&#xff0c;不连续则判断间断点类型2.2证明题 二…...

Redis生产问题(缓存穿透、击穿、雪崩)——针对实习面试

目录 Redis生产问题什么是缓存穿透&#xff1f;如何解决缓存穿透&#xff1f;什么是缓存击穿&#xff1f;如何解决缓存击穿&#xff1f;缓存穿透和缓存击穿有什么区别&#xff1f;什么是缓存雪崩&#xff1f;如何解决缓存雪崩&#xff1f; Redis生产问题 什么是缓存穿透&#x…...

android openGL中模板测试、深度测试功能的先后顺序

目录 一、顺序 二、模板测试 1、概念 2、工作原理 3、关键函数 三、深度测试 1、概念 2、工作原理 3、关键函数 三、模板测试和深度测试的先后顺序 一、顺序 在Android OpenGL中&#xff0c;模板测试&#xff08;Stencil Testing&#xff09;是在深度测试&#xff0…...

CCF PTA 编程培训师资认证2021年7月真题- C++兑换礼品

【题目描述】 小零和小壹是两个爱玩游戏的小孩&#xff0c;他俩平时最擅长的是解谜游戏&#xff0c;可今天 遇到了一个有点难的算法问题&#xff0c;希望能得到你的帮助。 他们面对的是一个电子装置&#xff0c;正面有 n 个排成一列的按钮&#xff0c;按钮上贴着编号 1~n 号的…...

火山引擎云服务docker 安装

安装 Docker 登录云服务器。 执行以下命令&#xff0c;添加 yum 源。 yum update -y yum install epel-release -y yum clean all yum list依次执行以下命令&#xff0c;添加Docker CE镜像源。更多操作请参考Docker CE镜像。 # 安装必要的一些系统工具 sudo yum install -y yu…...

【taro react】 ---- 常用自定义 React Hooks 的实现【六】之类渐入动画效果的轮播

1. 效果 2. 场景 css 效果实现:可以看到效果图中就是一个图片从小到大的切换动画效果,这个效果很简单,使用 css 的 transform 的 scale 来实现图片的从小到大的效果,切换就更加简单了,不管是 opacity 还是 visibility 都可以实现图片的隐藏和显示的切换。React.Children.m…...

基础算法练习--滑动窗口(已完结)

算法介绍 滑动窗口算法来自tcp协议的一种特性,它的高效使得其也变成了算法题的一种重要考点.滑动窗口的实现实际上也是通过两个指针前后遍历集合实现,但是因为它有固定的解题格式,我将其单独做成一个篇章. 滑动窗口的解题格式: 首先,定义两个指针left和right,与双指针不同的…...

深度学习经典模型之ZFNet

1 ZFNet 1.1 模型介绍 ​ ZFNet是由 M a t t h e w Matthew Matthew D . Z e i l e r D. Zeiler D.Zeiler和 R o b Rob Rob F e r g u s Fergus Fergus在AlexNet基础上提出的大型卷积网络&#xff0c;在2013年ILSVRC图像分类竞赛中以11.19%的错误率获得冠军&#xff08;实际…...

Linux系统-ubuntu系统安装

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 这是Linux进阶部分的最后一大章。讲完这一章以后&#xff0c;我们Linux进阶部分讲完以后&#xff0c;我们的Linux操作部分就…...

2-Ubuntu/Windows系统启动盘制作

学习目标&#xff1a; 掌握使用Win32DiskImager、Rufus等工具制作系统启动盘的基本步骤。独立将ISO镜像文件写入USB闪存驱动器&#xff0c;确保在需要时顺利安装或修复系统。通过学习如何选择正确的源文件和目标驱动器&#xff0c;理解启动盘的使用场景和注意事项&#xff0c;…...

你使用过哪些MySQL中复杂且使用不频繁的函数?

在MySQL中&#xff0c;除了常用的SELECT、INSERT、UPDATE等基本操作外&#xff0c;还有许多复杂且功能强大的函数&#xff0c;它们能够处理各种复杂的数据处理需求。这些函数虽然在日常开发中可能不常使用&#xff0c;但在特定场景下却能够发挥巨大的作用。下面&#xff0c;我将…...

Redis-07 Redis哨兵

操作实现 此处应该6台虚拟机&#xff0c;其中3台是哨兵&#xff0c;但因为内存限制没有那么多 1.将sentinel文件拷贝到/myredis目录下 2.sentinel.conf文件重要参数 新建配置文件sentinel26379.conf sentinel26380.conf sentinel26381.conf bind 0.0.0.0 daemonize yes pr…...

7.qsqlquerymodel 与 qtableview使用

目录 qtableview 委托QStyledItemDelegateQAbstractItemDelegateCheckBoxItemDelegate使用qtableview控制列宽&#xff0c;行高&#xff0c;隐藏拖拽行列 qtableview 委托 //设置单元格委托 void setItemDelegate(QAbstractItemDelegate *delegate); QAbstractItemDelegate *it…...

状态模式(State Pattern)详解

1. 引言 在很多软件系统中&#xff0c;对象的行为往往依赖于其内部状态&#xff0c;而状态的变化又会影响对象的行为。状态模式&#xff08;State Pattern&#xff09;为解决这一问题提供了一种优雅的方法。通过将状态的行为封装到独立的状态对象中&#xff0c;可以使得对象在…...

ajax微信静默登录不起效不跳转问题

问题描述&#xff1a; 今天通过ajax调用方式做微信静默登录&#xff0c;发现本地可以跳转&#xff0c;到线上地址死活都不跳转&#xff0c;就像没起作用一般&#xff0c;经许久排查发现&#xff0c;是因为https和http域名的问题&#xff0c;线上只配置了http域名&#xff0…...

参数估计理论

估计理论的主要任务是在某种信号假设下&#xff0c;估算该信号中某个参数&#xff08;比如幅度、相位、达到时间&#xff09;的具体取值。 参数估计&#xff1a;先假定研究的问题具有某种数学模型&#xff0c; 如正态分布&#xff0c;二项分布&#xff0c;再用已知类别的学习样…...

mybatis插入数据运行成功但数据库没有数据,id却在增长,是什么原因??

错误描述&#xff1a; mybatis插入数据运行成功&#xff0c;但是数据库却没有数据&#xff0c;id也在增加 原因&#xff1a;在测试方法上面加了 Transactional 虽然日志显示插入语句执行成功&#xff0c;但可能事务在提交过程中出现了问题。比如在后续的操作中有异常抛出导…...

Hadoop简介及单点伪分布式安装

目录 1. 大数据2. Hadoop简介3. Hadoop伪分布式安装4. Hadoop启动参考 1. 大数据 大数据的定义&#xff1a;一种规模大到在获取、存储、管理、分析方面大大超出传统数据库软件工具能力范围的数据集合。   特征&#xff1a;   1.海量的数据规模   2.快速的数据流转   3.…...

网站架构知识之Ansible模块(day021)

1.Ansible模块 作用:通过ansible模块实现批量管理 2.command模块与shell模块 command模块是ansible默认的模块&#xff0c;适用于执行简单的命令&#xff0c;不支持特殊符号 案列01&#xff0c;批量获取主机名 ansible all -m command -a hostname all表示对主机清单所有组…...

是时候用开源降低AI落地门槛了

过去三十多年&#xff0c;从Linux到KVM&#xff0c;从OpenStack到Kubernetes&#xff0c;IT领域众多关键技术都来自开源。开源技术不仅大幅降低了IT成本&#xff0c;也降低了企业技术创新的门槛。 那么&#xff0c;在生成式AI时代&#xff0c;开源能够为AI带来什么&#xff1f;…...

操作系统学习笔记-5.1-IO设备

文章目录 I/O控制器I/O 控制器的组成I/O 控制器的工作流程I/O 控制器的类型I/O 控制器的主要功能I/O 控制器与操作系统的交互DMA 的工作原理DMA 传输模式DMA 控制器的组成 组成内存映像I/O&#xff0c;寄存器独立编址 IO软件层次用户层 I/O 软件设备独立性软件层设备驱动程序中…...

页面、组件、应用、生命周期(微信小程序)

文章目录 页面生命周期函数组件生命周期函数应用&#xff08;App&#xff09;生命周期函数页面与组件生命周期的执行顺序注意事项 在微信小程序中&#xff0c;生命周期函数是指页面或组件在不同阶段会被自动调用的特定函数。这些函数可以帮助开发者在适当的时机完成特定的初始化…...

书生第四期实训营进阶岛——L2G4000 InternVL 多模态模型部署微调实践

基础任务 体验InternVL 运行demo 效果如下&#xff1a; 使用XTuner对InternVL进行微调 运行demo 效果如下&#xff1a;...

国内 ChatGPT中文版镜像网站整理合集(2024/11/08)

一、GPT中文镜像站 ① yixiaai.com 支持GPT4、4o以及o1&#xff0c;支持MJ绘画 ② chat.lify.vip 支持通用全模型&#xff0c;支持文件读取、插件、绘画、AIPPT ③ AI Chat 支持GPT3.5/4&#xff0c;4o以及MJ绘画 1. 什么是镜像站 镜像站&#xff08;Mirror Site&#xff…...