ajax笔记

Ajax

1 ajax基本概念

  • 概念:是浏览器和服务器进行数据通信的技术

  • 使用:

    • 先引用axios库

      语法:http://cdn.jsdelivr.net/npm/axios/dist/axios.min.js

    • 使用其函数

      axios({
      	//请求配置
          url:'目的资源地址'
      }).then((result)=>{
          //对服务器返回的数据做后续处理
      })
      

2 URL

2.1基本概念
  • 含义:统一资源定位符,网址,用于访问服务器资源
  • 组成:协议://域名/资源路径
2.2 URL查询参数
  • 让服务器返回浏览器想要的数据
  • 语法:http://xxx.com/xxx/xxx?参数名1=值1&参数名2=值2
2.3 axios查询参数
  • 作用:axios在运行时会把参数和值拼接到url后

  • 查询参数params是个对象

    axios({
    	//请求配置
        url:'地址',
        params:{
            参数名:值
            ...
        }
    })...
    

3 常用请求方法

请求方法操作
GET获取数据(一般省略)
POST提交数据
PUT修改数据(全部)
DELETE删除数据
PATCH修改数据(部分)
3.1提交数据
axios({
    //请求配置项
    url:'xxx',
    //请求方法
    method:'post',
    //处理的数据
    data:{
       参数名:值
    }
})
3.2获取数据
axios({
    //请求配置项
    url:'xxx',
    //请求方法
    method:'get',
    //处理的数据
    params:{
       参数名:值
    }
})
3.3 上传图片
//点击按钮,用户选择图片,change事件
document.querySelector('.btn').addEventListener('change', e => {
    // 1.获取图片url
    console.log(e.target.files[0])
    //2.利用FormData构造函数,调用append方法携带图片
    const fd = new FormData()
    fd.append('接口参数',url)
    //3.传到服务器
    axios({
        url:'xxx',
        method:'POST',
        data:fd
    }).then(result => {
        //取出图片并显示
        document.querySelector('.my-img').src = result.data.data.接口参数名
    })
})

当接口数据data规定要formdata时要船舰一个对象,再调用方法

4 axios错误处理

  • 语法:在then后用点语法调用catch方法,传入回调参数
axios({//请求选项
}).then(result=>{    
}).catch(error=>{
    //处理错误
})

5 HTTP协议—请求报文

5.1 HTTP协议

含义:规定浏览器发送到服务器返回内容的格式

5.2 请求报文

浏览器按协议要求的格式发送给服务器

5.3 请求报文的组成
  • 请求行:请求方法,URL,协议
  • 请求头:键值对格式的附加信息,
  • 空行:分隔
  • 请求体:发送的资源
5.4 查看方式

通过控制台的“网络”查看,载荷

6 HTTP协议—响应报文

6.1 响应报文

服务器按协议要求的格式发送给浏览器的内容

6.2 响应报文组成
  • 响应行(状态行):协议,HTTP响应状态码,状态信息
  • 响应头:键值对形式
  • 空行
  • 响应体:返回的资源
6.3 HTTP响应状态码
  • 作用:表示请求是否成功完成,如:404(服务器找不到资源)
状态码说明
1xx信息
2xx成功
3xx重定向错误
4xx客户端错误
5xx服务端错误

通过控制台的“网络”查看,响应

7 接口文档

  • 含义:描述接口的文章
  • 接口的含义:使用AJAX和服务器通讯时,使用的,URL,请求方法,参数

8 form-serialize插件

  • 目的:快速获取表单元素的值

  • 步骤

    • 引入js文件<script src="./lib/form-serialize.js"></script>

    • 使用serialize函数 const data = serialize(form,{hash:true,empty:true})

      • 参数1:要获取哪个表单的数据

        表单元素的name属性的值会作为data对象的属性名

        建议name属性值与接口文档参数一致

      • 参数2:配置对象

        hash设置数据结构,true为js对象,false为查询字符串

        empty设置是否获取空值

9 XMLHttpRequest对象

9.1 基本步骤
  • 创建对象
  • 调用open方法,配置请求方法和url
  • 监听loadend事件
  • 调用send方法,发送请求
let xhr = new XMLHttpRequest()
xhr.open('method',url)
xhr.addEventListener('loadend',()=>{
	//响应结果
    console.log(xhr.response)
})
xhr.send()
9.2 XML查询参数
  • 携带参数:直接写在URL后

如:xhr.open('GET','http://hma.ihen.net/api/city?panme=辽宁省')

  • 语法:

    • 使用URLSearchParams构造函数创建对象
    • 生成指定的字符串
    const paramsObj = new URLSearchParams({
        参数名1:值1,
        参数名2:值2
    })
    const queryString = paramsObj.toString()
    //结果:参数名1=值1&参数名2=值2
    

9.3 XML数据提交

在基本步骤基础上多了设置请求头和请求体(所需数据转成字符串)的步骤

提交的数据作为send方法的参数

  • 语法:
const xhr = new XMLRequest()
xhr.open('method',url)
xhr.addEventListener('loadend',()=>{
    console.log(xhr.response)
})
//设置请求头,告知类型
xhr.setRequestHeader('Content-Type','application/json')
//数据转成字符串
const str = {参数1:值1}
const str1 = JSON.stringfy(str)
//携带数据发送请求
xhr.send(str1)

10 Promise对象

10.1 含义

表示一个异步操作的成功/失败及结果值的对象

10.2 语法
  • 语法
// 创建对象
const p = new Promise((resolve,reject)=>{
    //2.执行异步任务-传递结果
    //成功调用:resolve函数返回的值p触发then()
    //失败调用:reject函数返回的值p触发catch()
})
//3.接受结果
p.then(result=>{
    //成功
}).catch(error=>{
    //失败
})
10.3 三种状态
  • 待定 - pending
  • 已兑现 - fullfilled
  • 已拒绝 - rejected

在这里插入图片描述

Promise对象一旦兑现/拒绝,状态无法再改变

10.4 Promise链式应用
  • 做法:用then返回一个promise对象,串联起来

axios和then每次都返回一个promise新对象,在then方法执行相关代码

10.5 Promise.all静态方法
  • 合并多个promise对象,等待所有同时完成再做后续处理

在这里插入图片描述

11 异步代码

11.1 含义

调用后耗时,不阻塞代码执行,完成后触发回调函数

11.2 有哪些异步代码
  • setTimeout / setInterval
  • 事件
  • AJAX

靠回调函数接受结果

11.3 回调函数地狱
  • 含义:回调函数嵌套回调函数
  • 问题:
    • 可读性差
    • 异常捕获差
    • 耦合性严重

模块间联系越多,其耦合性越强,同时表明其独立性越差( 降低耦合性,可以提高其独立性)

12 async和await关键字(异步)

12.1使用
  • async声明的函数是AsyncFunction的构造函数实例,里面是一些异步的代码。里面使用await关键字取代then,返回获取Promise对象成功的结果
12.2 错误捕获

利用try和catch代码块

  • 语法:
try {
    //要执行的代码块
} catch (error){
    //接受错误信息
    //try里面只要出现错误便无法继续执行后面的代码
}

13 事件循环

13.1 含义

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

13.2 原因

js是单线程,不阻塞JS引擎

13.3执行过程
  • 先执行同步,异步交给宿主浏览器环境执行

  • 执行完浏览器推入任务队列排队

  • 当调用栈空闲时,反复调用任务队列里的回调函数

    先同步后异步

13.4宏任务和微任务
  • 宏任务:浏览器执行的代码

    如:JS执行脚本事件,定时器,AJAX请求完成事件,用户交互事件

  • 微任务:JS引擎执行的异步代码

    如:Promise对象的then回调

  • 执行过程:

    • 先执行宏任务里的第一个JS执行脚本事件,里面同步代码
    • 当执行栈空闲时,先执行完微任务队列,再执行宏任务队列

14 实战

14.1 访问权限token
  • 作用:确定用户有无访问网页的权限,本质是字符串

  • 如何形成?正确登陆后由后端签发并返回

    在这里插入图片描述

    前端只能检查有无token,后端才能检查token是否正确

  • 使用过程

    • 单独写一个JS文件,检查本地有无token,否则跳转至登录页
    • 将js文件应用于需要登录的html文件(引入外部js方式)
    • 登录js文件,成功后本地存储服务器返回的token,并跳转至指定页面
14.2 axios请求拦截器
  • 作用:发起请求前对请求参数进行额外配置
  • 何时使用?在公共配置时,统一设置在拦截器中
  • 语法:

调用 Axios 库的 interceptors 对象的 request 方法,用于添加一个请求拦截器,两个参数都是回调函数

axios.interceptors.request.use(function(config){
    const token= localStorage.getItem('token')
    //逻辑中断
    token && (config.headers.Authorization = `Bearer ${token}`)
    return config
}, function (error){
    return Promise.reject(error)
})
14.3axios响应拦截器
  • 作用:在回到then/catch前,拦截函数对相应的结果先做处理

  • 何时出发成功或失败的拦截函数?

    • 状态码为2xx触发成功回调
    • 其他则触发失败回调

    回调函数里要先判断状态码

  • 语法:

Axios 提供的拦截器函数,用于拦截发出的请求的响应。它接受两个参数:第一个是成功时的处理函数,第二个是失败时的处理函数

axios.interceptors.response.use(function(response){
    //2xx状态码都会触发该函数
    return response
}, function (error){
    //超出2xx的状态码都会出发该函数
    //如身份验证失败是401
    if(error?.response?.status === 401) {
        alert('登录过期,请重新登录!')
        localStorage.clear()
        location.href = '../login/index.html'
    }
    return Promise.reject(error)
})
  • 6
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256) 文件编码(008-TTIG-UTITD-GKBTT-PUUTI-WYTUI-8256) 计算机控制系统课程设计 课 程 设 计 报 告 学生姓名: 学 号: 学 院: 自动化工程学院 班 级: 题 目: 计算机控制系统 1 题目背景与意义 设计背景 在自动控制系统的实际工程中,经常需要检测被测对象的一些物理参数,如温度、流量、压力、速度等,这些参数都是模拟信号的形式。它们要由传感器转换成电压信号,再经A/D转换器变换成计算机能够处理的信号。同样,计算机控制外设,如电动调节阀、模拟调速系统时,就需要将计算机输出的数字信号经过D/A转换器变换成外设能接受的模拟信号。本次《计算机控制系统》课程设计的目的就是让同学们在理论学习的基础上,通过完成一个涉及单片机A/D和D/A多种资源应用并具有综合功能的小系统目标板的设计与编程应用,使我们不但能够将课堂上学到的理论知识与实际应用结合起来,而且能够对电子电路、电子元器件、等方面的知识进一步加深认识,同时在系统设计、软件编程、相关仪器设备的使用技能等方面得到较全面的锻炼和提高。帮助同学们增进对单片机的感性认识,加深对单片机理论方面的理解,从而更好的掌握单片机的内部功能模块的应用以及A/D和D/A功能的实现。使学生了解和掌握单片机应用系统的软硬件设计过程、方法及实现,为以后设计和实现单片机应用系统打下良好基础。 设计意义 通过设计此测控装置,加深对控制系统的理解,达到活学活用的目的。理论结合实践,锻炼综合运用能力。 2 设计题目介绍 设计题目 设计一个基于单片机的具有A/D和D/A功能的信号测控装置。要求该信号测控装置能够接入典型传感器、变送器信号,同时可输出标准电压/电流信号。并满足抗干扰、通用性、安全性、性价比等原则性要求。 标准电压/电流信号此处定为:0~5V/4~20mA 设计要求 基本要求 设计一个基于单片机的具有A/D和D/A功能的信号测控装置。要求该信号测控装置能够接入典型传感器、变送器信号,同时可输出标准电压/电流信号。并满足抗干扰、通用性、安全性、性价比等原则性要求。 1. 基本要求: 1) 充分理解题目要求,确定方案。 2) 合理选择器件型号。 3) 用1号图纸1张或者采用Protel软件画出电原理图。 4) 用1号图纸1张画出软件结构框图。 5) 写出设计报告,对课程设计成品的功能进行介绍及主要部分进行分析与说明。 6) 每天写出工作日记。 2. 发挥部分: 1) 可将系统扩展为多路。可在此系统中扩展键盘、显示(LCD/LED)、与上位机通讯功能。 2) 完成以上基本设计部分之后,可以运用Proteus仿真软件对设计结果进行相应的编程和仿真,调试测控系统并观察其运行结果(可以分部分完成)。 3 系统总体框架 上位机通信显示模块声光报警键盘模块模拟量输出模拟量输入DAC0832ADC0808AT89C51 上位机通信 显示模块 声光报警 键盘模块 模拟量输出 模拟量输入 DAC0832 ADC0808 AT89C51 4 硬件设计 单片机 单片机是在在芯片内集成了构成一台计算机的主要器件:CPU、运算器、存储器、I/O口及其他功能部件的一块单晶芯片。因此它的功能很强大,广泛的应用于生产中。 单片机的选择 此次设计选用AT89C51单片机作为处理核心。89C51是一种带4K字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8位微处理器,内含32根双向且分别可寻址的IO线,128字节RAM,2个16位定时计数器,全双工异步串行口,2个中断优先级,5个中断源,片内有时钟振荡器。 时钟电路 89C51的时钟信号通常由两种方式产生:内部时钟和外部时钟。实际应用中通常采用外接晶振的内部时钟方式,在满足系统功能的前提下,应选择低一些的晶振频率。重要在单片机的XTAL1 和XTAL2引脚外接晶振即可。其中C2 和C3的作用是稳定频率和快速起振。 复位电路 单片机的初始化操作,给复位脚RST加上大于2个机器周期(即24个时钟振荡周期)的高电平就使AT89C51复位。 复位时,PC初始化0000H,程序从0000H单元开始执行。除系统的正常初始化外,当程序出错(如程序跑飞)或操作错误时系统处于死锁状态时,需按复位键使RST脚为高电平,使AT89C51摆脱"跑飞"或"死锁"状态而重新启动程序。复位电路与单片机连接如图。 A/D转换器 模拟量输入通道的任务是把在工业现场中采集到的模拟量转换成计算机可识别的数字量。模拟量输入通道一般有信号预处理、多路模拟开关、前置放大器、采样保持器、A/D转换器、接口和控制电路组成。其核心是A/D转换器。 A/D转换器的选择 目前转换器的型号有很多,精度和位数的选择范围很大。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值