axios的学习

news/2024/5/20 22:12:37/文章来源:https://blog.csdn.net/m0_73172034/article/details/131538882

axios是基于promise对ajax的一种封装

//将省份信息打印到网页上
<p class="my-p"></p>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>axios({url:'http://hmajax.itheima.net/api/province'}).then(result=>{console.log(result)console.log(result.data.list)console.log(result.data.list.join('<br>'))document.querySelector('.my-p').innerHTML=result.data.list.join('<br>')})
</script>

axios-查询参数 

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>axios({url:'目标资源地址',params:{参数名:值}}).then(result=>{//对服务器返回的数据做后序处理})
</script>

查询省份信息:

//查询省份
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>axios({url:'https://hmajax.itheima.net/api/city',params:{pname:'湖南省'}}).then(result=>{//对服务器返回的数据做后序处理console.log(result)console.log(result.data.list)document.querySelector('p').innerHTML=result.data.list.join('<br>')})
</script>

请求方法:

3a21562242984d3a94d4e6483df686d4.png

 axios请求配置:

语法: 

axios({
    url:'目标资源地址',
    method:'请求方法',
    data:{
      参数值:值
    }
  }).then((result=>{
    //服务器返回的数据做后续处理
          })
  )

method:请求的方法,GET可以省略

axios错误处理

语法:在then方法的后面,通过点语法调用catch方法,传入回调函数并定义形参

axios({//请求选项
}).then(result=>{//处理数据
}).catch(error=>{//处理错误
})

注册账号及账号重复的报错:

<button class="btn">注册用户</button>
<script src="https://unpkg.com/axios/dist/axios.min.js"></script>
<script>document.querySelector('.btn').addEventListener('click',()=>{axios({url:'http://hmajax.itheima.net/api/register',method:'post',data:{username:'itheima389754758958',password:'123456'}}).then(result=>{console.log(result)}).catch(error=>{console.log(error)alert(error.response.data.message)})})
</script>

HTTP协议 - 请求报文

HTTP协议:规定了浏览器发送及服务器返回内容的格式

请求报文:浏览器按照HTTP协议要求的格式,发送给服务器的内容

请求报文的组成部分:

  • 请求行:请求方法,URL,协议
  • 请求头:以键值对的格式携带的附加信息,比如:Content-Type
  • 空行:分隔请求头,空行之后是发送给服务器的资源
  • 请求体:发送到资源

请求报文排查错误原因,并修复输入正确的用户名和密码无法登录:

HTTP协议 - 响应报文

HTTP协议:规定了按照HTTP协议要求的格式,返回给浏览器的内容

  • 响应头(状态行):协议,HTTP响应状态码,状态信息
  • 响应头:以键值对的格式携带的附加信息,比如:Content-Type
  • 空行:分隔响应头,空行之后是发送给服务器的资源
  • 响应体:返回的资源

HTTP响应状态码:用来表明是否成功完成。

83f10e6e525e48e18df46ae6752f8a6b.png

接口文档

接口文档:描述接口的文章

接口:使用AJAX和服务器通讯时,使用的URL,请求方法,以及参数

  axios({url:'http://hmajax.itheima.net/api/city',method:'get',params:{pname:'辽宁省'}})

form-serialize插件

作用:快速收集表单元素的值

语法:

const form = document.querSelector ('.example-from')

const data=serialize(form, {hash: true, emty: true})

    </form>
<!--    目标;在点击提交时,使用form-serialize插件,快速手机表单元素值-->
<!--    把插件引入到自己的网页中--><script src="../lib/form-serialize.js"></script><script>document.querySelector('.btn').addEventListener('click',()=>{// 使用serialize函数,快速手机表单元素的值// 参数1;要获取那个表单的数据// 表单元素设置name属性,值会作为对象的属性名// 参数2:配置对象// hash  设置获取数据结构//    -true:JS对象(推荐)一般请求里提交给服务器//    -false:查询字符串// empty设置是否获取空值const form=document.querySelector('.example-form')const data=serialize(form,{hash:true,empty:true})console.log(data)})</script>

Bootstrap弹框

功能:不离开当前页面,显示单独内容,供用户操作

步骤

  • 引入bootstrap.css和bootstrap.js
  • 准备弹框标签,确认结构
  • 通过自定义属性,控制弹框的显示和隐藏
<button data-bs-toggle="modal" data-bs-target="css选择器">显示弹框</button>
<button data-bs-dismiss="modal">Close</button>

通过JS控制,弹框显示或隐藏

    // 创建弹框对象const modalDom=document.querySelector('css选择器')const modal=new bootstrap.Modal(modalDom)// 显示弹框modal.show()// 隐藏弹框modal.hide()

AJAX原理-XMLHttpRequest

XMLHttpRequest(XML)对象用于与服务器交互,通过XMLHttpRequest可以在不刷新页面的情况下请求特定URL,获取数据,这允许网页在不影响用户操作的情况下,更新页面的局部内容,XML在AJAX编程中被大量使用

关系:axios内部采用XMLHttpRequest与服务器交互

步骤:

  1. 创建XMLHttpRequest对象
  2. 配置请求方法和请求url地址
  3. 监听loadend事件,接收响应结果
  4. 发起请求

语法:

const xhr=new XMLHttpRequest()
xhr.open('请求方法','请求url网址')
xhr.addEventListener('loadend',()=>{console.log(xhr.response)
})
xhr.send()

XMLHttpReqest-查询参数

定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据

语法:http://xxx.com/xxx/xxx?参数名1=值1&参数名2=值2

语法:
//创建URLSearchParams对象
const paramsObj=new URLSearchParams({参数名1:值1,参数名2:值2
})
//生成指定格式查询参数,字符串
const queryString =paramsObj.toString()
//结果:参数名1=值1&参数名2=值2

XMLHttpRequest-数据提交

需求:通过XHR提交用户名和密码,完成注册功能

请求头设置:Content-type:application/json

请求头携带JSON字符串

语法:

const xhr=new XMLHttpRequest()xhr.open('请求方法','请求url网址')xhr.addEventListener('loadend',()=>{console.log(xhr.response)})//告诉服务器,传递的内容类型,是JSON字符串xhr.setRequestHeader('Content-Type','application/json')//准备数据并转成JSON字符串const user={username:'itheima007',password:'7654321'}const userStr=JSON.stringify(user)//发送请求体数据xhr.send(userStr)

Promise

对象用于表示一个异步操作的最终完成(或失败)及其结果值

好处:逻辑清晰,了解axios函数内部运行机制,能解决回调函数地狱问题

//创建Promise对象
const p=new Promise((resolve,reject)=>{//执行异步任务//成功调用:resolve(值)触发then()执行//失败调用:reject(值)触发catch()执行
})
//接受结果
p.then(result=>{//成功
}).catch(error=>{//失败
})

Promise-三种状态

作用:了解Promise对象如何处理关联的处理函数,以及代码执行顺序

概念:一个Promise对象,必然处于以下的几种状态之一

  • 待定:初识状态,没有被对线,也没有被拒绝
  • 已兑现:意味着操作成功
  • 已拒绝:意味着操作失败

Promise对象一旦被兑现或拒绝,就是已经敲定了,状态无法被改变

同步代码和异步代码

同步代码:浏览器是按照书写代码的顺序一行一行执行程序的,浏览器会等待底阿妈的解析和工作,在上一行完成后才会执行下一行

  • 逐步执行,虚原地等待结果,才继续向下执行

异步代码:可能长期运行的任务的同时继续对其他事件做出反应而不必等待任务完成,程序也将在任务完成后显示结果

  • 调用后耗时,不阻塞代码继续执行,不必原地等待,在将来完成后触发一个回调函数
  • setTimeout,setInterval

回调函数地狱

概念:在回调函数中嵌套回调函数,一直嵌套下去

缺点:可读性差,异常无法捕获,耦合性严重

Promise-链式调用

概念:依靠then()方法会返回一个新生成的Promise对象特性,继续串联下一环任务,直到结束

细节:then()回调函数中的返回值,会影响新生成的Promise对象 最终状态和结果

优点:通过链式调用,解决回调函数嵌套问题

new Promise -> .then(回调函数)-> 新的Promise对象

async函数和await

概念:在async函数内,使用await关键字取代then函数,等待获取Promise对象成功状态的结果值

async函数是使用async关键字声明的函数,async函数式AsyncFunction构造函数的实例,并且其中允许使用await关键字。

async和await关键字可以写出局域Promise的异步行为,而无需刻意调用Promise。

<script src="https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js"></script>
<script>async function getData(){const pObj=await axios({url:'http://hmajax.itheima.net/api/province'})const pname=pObj.data.list[0]const cObj=await axios({url:'http://hmajax.itheima.net/api/city',params: {pname}})const cname=cObj.data.list[0]const aObj=await axios({url:'http://hmajax.itheima.net/api/area',params: {pname, cname}})console.log(aObj)document.querySelector('.pname').innerHTML=pnamedocument.querySelector('.cname').innerHTML=cname}getData()
</script>

async函数和await捕获错误:

使用try…catch,标记要尝试的语句块,并指定一个出现异常时抛出的响应

语法:

try{//要执行的代码
}catch (error){//error接受的是错误信息//try里代码,如果有错误,直接进入这里执行
}

如果try预计中某行代码报错后,try中剩余的代码不会执行了

cb886ee95ec146b8a1b474d16d983ea0.png

在第四个链接处出错,会导致try中剩余的代码不会执行 

5d1092407db44086b237a7c5047a20bb.png

事件循环

概念:JavaScript有一个基于事件循环的并发模型,事件循环

好处:掌握JavaScript是如何安排和运行代码的赋值执行代码,收集和处理事件以及执行队列中的子任务。

原因:JavaScript单线程(某一刻只能执行一行代码,为了让耗时代码不阻塞其他代码运行,设计了时间循环模型)

事件循环-执行过程:

执行代码和收集异步任务的模型,在调用栈空闲,反复调用任务队列里回调函数的执行机制

宏任务与微任务

异步任务分为:

  • 宏任务:有浏览器环境执行的异步代码
  • 微任务:有JS引擎环境执行的异步代码

4edda694186a4fc2b047be9893807461.png

c61c8e11ee264235b940906a4a9a26f2.png

Promise本身是同步的,但是then和catch回调函数是异步的,其异步输入微任务队列,比宏任务队列先执行

Promise.all静态方法

概念:合并多个Promise对象,等待所有同时成功完成(或一个失败),做后续逻辑

 

3cec6de121764cc78bdea01bf8d8c053.png

const p=Promise.all([Promise对象,Promise对象,…])
p.then(result=>{//result结果:[Promise对象成功结果,Promise对象成功结果,……]
}).catch((error=>{//第一个失败的Promise对象,抛出的异常
}))

 

 

 

 

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

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

图形学 | 期末复习(上)| games101笔记 | 补档

博客基于GAMES101-现代计算机图形学入门-闫令琪&#xff0c;但不是其完整笔记&#xff0c;基于复习要求有一定的删减。考试以图形学入门基本概念和核心研究内容为主&#xff0c;少量公式。即以论述概念为主&#xff0c;涉及少量算法。p1:29:12是对应的games101视频节点&#xf…

在阿里云上部署Springboot项目

文章目录 环境准备1.安装jdk2.安装mysql3.开启端口 上传项目1.数据库上传2.项目上传 环境准备 1.安装jdk 查看系统中原来是否含有java环境 rpm -qa |grep java rpm -qa |grep jdk rpm -qa |grep gcj其中&#xff0c;gcj是一个轻巧的&#xff0c;性能优越的Java语言编译器。它…

基于深度学习的高精度球场足球检测识别系统(PyTorch+Pyside6+YOLOv5模型)

摘要&#xff1a;基于深度学习的高精度球场足球检测识别系统可用于日常生活中或野外来检测与定位球场足球目标&#xff0c;利用深度学习算法可实现图片、视频、摄像头等方式的球场足球目标检测识别&#xff0c;另外支持结果可视化与图片或视频检测结果的导出。本系统采用YOLOv5…

【考研408计算机组成原理】第三章存储系统 第五节cache

3.5.1工作原理 局部性原理&#xff1a;在最近可能会使用到周围的数据和指令。 性能分析&#xff1a;访问数据的时间 例题&#xff1a; 提出问题 知识总结 3.5.2 cache和主存的映射方式 3.5.3 替换算法 3.5.4 cache写策略

确保无缝、安全的云转型

随着云计算继续主导数字化转型&#xff08;这是理所当然的&#xff09;&#xff0c;组织面临着双重挑战&#xff1a;将运营无缝转移到云并确保这种转型的安全。 虽然云的采用保证了可扩展性、成本效率和生产力的提高&#xff0c;但保持警惕对于组织防范网络安全威胁和安全漏洞…

Nuxt3引入Element-plus和sass

1.引入Element-plus 打开编辑器终端 运行npm install element-plus/nuxt 或者命令行cd到项目文件 运行npm install element-plus/nuxt package.json文件会出现 使用Element-plus 在nuxt.config.ts文件添加代码 export default defineNuxtConfig({devtools: { enabled: true }…

<数据结构>NO9.选择类排序|直接选择排序|堆排序

文章目录 选择排序1.直接选择排序优化直接选择排序 2. 堆排序 选择排序 基本思想 选组排序是从待排序数据中选出最大/最小的元素放入到序列的起始位置&#xff0c;直到待排序数据全部有序。 直接选择排序和堆排序的基本思想均符合选择排序。 1.直接选择排序 假设数据按升序…

深入理解java虚拟机精华总结:硬件的效率与一致性、Java内存模型、Java与线程、Java与协程

深入理解java虚拟机精华总结&#xff1a;硬件的效率与一致性、Java内存模型、Java与线程、Java与协程 硬件的效率与一致性Java内存模型主内存与工作内存内存间交互操作对于volatile型变量的特殊规则针对long和double型变量的特殊规则原子性、可见性与有序性原子性可见性有序性 …

离线环境下安装微软Visual Studio 2022 生成工具

1. 前言 最近&#xff0c;在学习cython的时候&#xff0c;需要安装windows下的C/C编译、链接工具。开始觉得传统的msvc太大了&#xff0c;想要尝试Mingw&#xff0c;但是都是编译错误。无奈之下&#xff0c;还是要安装msvc。 微软提供了Visual Studio 2022 Build Tools &…

【华为机试】HJ16 购物单详解+完整源代码示例

从毕业到入职&#xff0c;忙于各种事情&#xff0c;所以博客一直也没有空更新。从入职到现在差不多整三个月了&#xff0c;刚刚在比亚迪这边转正。目前干的工作涉及到开发的工作不是很多&#xff0c;但是又怕之前的技能荒废了。所以最近有个想法&#xff0c;再把C算法和数据结构…

【CSS】跳动文字

文章目录 效果展示代码实现 效果展示 代码实现 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>一颗不甘坠落的流星</title></head><style type"text/css">/* 遮罩盒子样式 */#mask {/* 设…

RabbitMQ系列(27)--RabbitMQ使用Federation Exchange(联邦交换机)解决异地访问延迟问题

前言&#xff1a; (broker北京)、(broker深圳)彼此之间相距甚远&#xff0c;网络延迟是一个不得不面对的问题。有一个在北京的业务(Client北京&#xff09;需要连接(broker北京),向其中的交换器exchangeA发送消息&#xff0c;此时的网络延迟很小,(Client北京)可以迅速将消息发…

Android studio 引入不了R包,手动引入显示红色。可以跑起来却没问题

之前在这个问题踩坑2次&#xff0c;遂记录一下。 问题是&#xff1a;工程里找不到自己包名的R&#xff0c;手动导入显示红色&#xff0c;Run起来倒是没问题 尝试过Clean&#xff0c;Rebuild&#xff0c;清缓存&#xff0c;重启&#xff0c;都没用。 最终发现是没有在 Android…

回溯法解决地图填色问题

目录 回溯法 最大度优先 最少可选颜色优先 向前探测 随机产生不同规模的图&#xff0c;分析算法效率与图规模的关系&#xff08;四色&#xff09; 回溯法 回溯法的基本思想是采用递归和深度优先搜索的方法&#xff0c;尝试在一组可能的解中搜索出符合要求的解&#xff0c…

git bash---打开当前路径所在文件夹

0 Preface/Foreword 在Windows操作系统中使用git bash时&#xff0c;可以通过命令直接打开当前路径下的文件夹&#xff0c;命令如下 explorer .

机器学习之多元微积分

机器学习的多元微积分跟高等数学中的多元微积分有很多不同之处。 矩阵求导也是一样的&#xff0c;本质就是每个函数分别对矩阵或者向量中的每个元素逐个求偏导&#xff0c;只不过写成了向量、矩阵形式而已。 机器学习中的变量都是向量或者矩阵机器学习中的函数一般都是线性函…

前端vue入门(纯代码)24_Modules

穷不怪父&#xff0c;苦不责妻&#xff0c;方为真男人&#xff01; 【23.Vuex中的模块化和命名空间】 [可以去官网看看Vuex3文档](Module | Vuex (vuejs.org)) 由于使用单一状态树&#xff0c;应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时&#xff0c;sto…

ElasticSearch学习笔记一——下载及安装

最近发现ES是个很重要的内容啊&#xff0c;各种大厂都会使用ES来做一些大范围的搜索之类的功能&#xff0c;所以今天我们也来学习一下。 首先我们要准备Java的环境&#xff0c;推荐版本8、11、14 ES官方的JDK兼容性列表(有些慢&#xff0c;需要耐心等待一下哈) 在我写文章时&…

Unity VR:Oculus Integration 中 OVRManager 的 Eye Level,Floor Level,Stage 的区别

Oculus Integration 开发包中有个 OVRManager 脚本被挂载到 OVRCameraRig 物体上。OVR Manager 中有个 Tracking Origin Type 参数&#xff0c;它相当于追踪的参考系&#xff0c;参数分为 Eye Level, Floor Level 和 Stage。 VR 设备会对头显进行追踪&#xff0c;于是现实中头显…

热门实践丨如何结合实际业务进行 ECS 规格选型与容量验证

作者&#xff1a;赵佳佳 随着云原生技术的蓬勃发展以及云产品价格愈发低廉&#xff0c;越来越多 Geek 开发者、技术爱好者选择 OSS 对象存储、ECS 云服务器等基础产品构建自己的网站、网盘等应用。但对于企业而言&#xff0c;面对种类与规格的丰富的 ECS 云服务器&#xff0c;…