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

用竹片做的网站比利时网站的后缀

用竹片做的网站,比利时网站的后缀,做原油的网站,海外海外网站建设文章目录标题 Ajax学习笔记axios使用axios请求拦截器axios响应拦截器优化axios响应结果 form-serialize插件图片上传HTTP协议请求报文相应报文接口文档 AJAX原理 - XMLHttpRequest使用XMLHttpRequestXMLHttpRequest - 查询参数查询字符串对象 XMLHttpRequest - 数据提交 事件循… 文章目录标题 Ajax学习笔记axios使用axios请求拦截器axios响应拦截器优化axios响应结果 form-serialize插件图片上传HTTP协议请求报文相应报文接口文档 AJAX原理 - XMLHttpRequest使用XMLHttpRequestXMLHttpRequest - 查询参数查询字符串对象 XMLHttpRequest - 数据提交 事件循环执行过程宏任务和微任务 Promise对象同步代码和异步代码回调函数地狱 Promise的三种状态通过PromiseXHR模拟axios实现Promise - 链式调用链式调用解决回调函数地狱省份——城市——地区查询 Promise.all 静态方法 async函数和await关键字使用async函数和await关键字解决回调函数地狱async函数和await关键字的错误捕获 Ajax学习笔记 定义Ajax是异步的JavaScript和XML。简单来说就是使用XMLHttpRequest对象与服务器通信。它可以使用JSON、XML、HTML和text文本邓格式发送和接收数据。Ajax最吸引人的就是它的“异步”特性也就是说它可以在不重新刷新页面的情况下与服务器通信、交换数据或更新页面。 概念Ajax是浏览器与服务器进行数据通信的技术。 作用浏览器和服务器之间通信动态数据交互。 axios使用 axios体验步骤 引用axios库使用axios语法 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodyp classmy-p/pscript srchttps://cdn.jsdelivr.net/npm/axios/dist/axios.min.js/scriptscriptaxios({url: https://hmajax.itheima.net/api/province}).then(result {//console.log(result.data.list.join(br));document.querySelector(.my-p).innerHTML result.data.list.join(br)})/script /body/htmlaxios请求拦截器 axios请求拦截器发起请求之前出发点配置函数对请求参数进行额外配置。 语法 axios.interceptors.request.use(function (config) {// 在发送请求之前做什么return config }, function (error) {// 对请求错误做些什么return Promise.reject(error) })axios响应拦截器 axios响应拦截器响应回到then/catch之前触发的拦截函数对响应的结果统一处理。 语法 axios.interceptors.response.use(function (response) {// 2xx范围内的状态码都会触发该函数// 对响应数据做些什么return response }, function (error) {// 超出2xx范围的状态码都会触发该函数// 对响应错误做点什么。return Promise.reject(error) })优化axios响应结果 目标axios直接接收服务器返回的响应结果。 form-serialize插件 作用快速收集表单元素的值。 语法serialize(form, { hash: true, empty: true }) form获取的表单hash设置获取数据结构 trueJS对象false查询字符串 empty设置是否获取空值 true获取空值使数据结构和标签结构一致false不获取空值 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodyform actionjavascript:;input typetext nameusernamebrinput typetext namepasswordbrinput typebutton classbtn value提交/formscript src../form-serialize.js/scriptscriptdocument.querySelector(.btn).addEventListener(click, () {const form document.querySelector(form)const data serialize(form, { hash: true, empty: true })console.log(data);})/script /body/html图片上传 使用步骤 获取图片文件对象 使用FormData携带图片文件 const fd new FormmData() fd.append(参数名, 值)提交表单数据到服务器使用图片url网址 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodyinput typefile classuploadimg src altscript srchttps://cdn.jsdelivr.net/npm/axios/dist/axios.min.js/scriptscriptdocument.querySelector(.upload).addEventListener(change, e {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.urldocument.querySelector(img).src imgurl})})/script /body/htmlHTTP协议 HTTM协议规定了浏览器发送及服务器返回内容的格式。 请求报文 请求报文浏览器按照HTTP协议要求的格式发送给服务器的内容。 组成部分 请求行请求方法URL协议请求头以键值对的格式携带的附加信息比如Content-Type空行分隔请求头空行之后的是发送给服务器的资源请求体发送的资源 相应报文 响应报文服务器按照HTTP协议要求的格式返回给浏览器的内容。 组成部分 响应行状态行协议、HTTP响应状态码、状态信息 HTTP响应状态码用来表明请求释放成功完成 状态码说明1xx信息2xx成功3xx重定向信息4xx客户端错误5xx服务端错误 比如404服务器找不到资源 响应头以键值对的格式携带的附加信息比如Content-Type 空行分隔响应头空行之后是服务器返回的资源 响应体返回的资源 接口文档 接口文档描述接口的文章。 接口使用AJAX和服务器通讯时使用的URL、请求方法以及参数。 AJAX原理 - XMLHttpRequest 定义XMLHttpRequestXHG对象用于与服务器交互。通过XMLHttpRequest可以在不刷新页面的情况下请求特定URL获取数据。这允许网页在不影响用户操作的情况下更新网页的局部内容。 关系axios内部采用XMLHttpRequest与服务器交互 使用XMLHttpRequest 使用步骤 创建XMLHttpRequest对象 配置请求方法和请求url地址 监听loadend事件接收响应结果 发起请求 const xhr new XMLHttpRequest()xhr.open(请求方法, 请求url网址)xhr.addEventListener(loadend, () {console.log(xhr.response)})XMLHttpRequest - 查询参数 定义浏览器提供给服务器的额外信息让服务器返回浏览器想要的数据。 例子查询河北省的城市名称。 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodydiv/divscriptconst xhr new XMLHttpRequest()xhr.open(get, https://hmajax.itheima.net/api/city?pname河北省)xhr.addEventListener(loadend, () {console.log(xhr.response);// 将字符串转成对象const data JSON.parse(xhr.response) // 字符串转对象document.querySelector(div).innerHTML data.list.join(br)})xhr.send()/script /body/html查询字符串对象 使用步骤 创建URLSearchParams对象生成固定格式查询参数的字符串 const paramsobj new URLSearchParams({参数名1: 值1,参数名2: 值2})const queryString paramsobj.toString() // 结果参数名1值1参数名2值2XMLHttpRequest - 数据提交 核心 请求头设置Content-Typeapplication/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) // 发送请求体数据事件循环 概念JavaScript有一个基于事件循环的并发模型事件循环负责执行代码、收集和处理事件以及执行队列中的子任务。 原因JavaScript单线程某一时刻只能执行一行代码为了让耗时代码不阻塞其他代码运行设计了事件循环。 执行过程 定义执行代码和收集异步任务的模型在调用栈空闲反复调用任务队列里回调函数的执行机制就叫事件循环。 console.log(1);setTimeout(() {console.log(2);}, 2000)console.log(3);setTimeout(() {console.log(4);}, 0)console.log(5);// 打印顺序1 3 5 4 2宏任务和微任务 ES6之后引入了Promise对象让JS引擎也可以发起异步任务。 异步任务分为 宏任务由浏览器环境执行的异步代码微任务由JS引擎环境执行的异步代码 任务代码执行所在环境JS脚本执行事件script浏览器setTimeout/setInterval浏览器AJAX请求完成事件浏览器用户交互完成事件浏览器Promise对象.then()JS引擎 Promise本身是同步的而then和catch回调函数是异步的。 因为微任务队列离JS引擎更近所以先执行微任务队列里的代码再执行宏任务队列里的代码。 console.log(1);setTimeout(() {console.log(2);})const p new Promise((resolve, reject) {console.log(3);resolve(4)})p.then(result {console.log(result);})console.log(5);// 打印顺序1 3 5 4 2console.log(1)setTimeout(() {console.log(2)const p new Promise(resolve resolve(3))p.then(result console.log(result))}, 0)const p new Promise(resolve {setTimeout(() {console.log(4)}, 0)resolve(5)})p.then(result console.log(result))const p2 new Promise(resolve resolve(6))p2.then(result console.log(result))console.log(7)// 1 7 5 6 2 3 4Promise对象 定义Promise对象用于表示一个异步操作的最终完成或失败及其结果值。 好处 使逻辑更清晰了解axios函数内部运作机制能解决回调函数地狱问题 核心代码 // 1.创建promise对象const p new Promise((resolve, reject) {// 2.执行异步任务并传递结果// 成功调用resolve(值) 触发then()执行// 失败调用reject(值) 触发catch()执行})// 3.接收结果p.then(result {// 成功}).catch(error {// 失败})同步代码和异步代码 同步代码逐步执行需要原地等待结果后才继续往下执行。 异步代码调用后耗时不阻塞代码继续执行不必原地等待在将来完成后触发一个回调函数。 JS中的异步代码 setTimeout / setInterval事件AJAX 异步代码通过回调函数接受结果。 回调函数地狱 概念在回调函数中嵌套回调函数一直嵌套下去就形成了回调函数地狱。 缺点可读性差异常无法捕获耦合性严重牵一发动全身。 Promise的三种状态 作用了解Promise对象如何关联的处理函数以及代码执行顺序。 概念一个Promise对象必定处于以下三种状态之中 待定pending初始状态既没有被兑现也没有被拒绝已兑现fulfilled操作成功完成已拒绝rejected操作失败 注意 promise对象一旦被兑现/拒绝就是已敲定了状态无法再被改变。new promise()里的回调函数会立即执行 通过PromiseXHR模拟axios实现 需求基于PromiseXHR封装myAxios函数获取省份列表展示 步骤 定义myAxios函数接收配置对象返回Promise对象发起XHR请求默认请求方法为get调用成功/失败的处理程序使用myAxios函数获取省份列表展示 核心代码模板 function myAxios (config){return new Promise((resolve, reject) {// XHR请求// 调用成功/失败的处理程序})}myAxios({url: 目标资源地址}).then(result {}).catch(error {})完整实现代码 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodyp/pscriptfunction myAxios(config) {return new Promise((resolve, reject) {const xhr new XMLHttpRequest()xhr.open(config.method || get, config.url)xhr.addEventListener(loadend, () {if (xhr.status 200 xhr.status 300) {resolve(JSON.parse(xhr.response))}else {reject(new Error(xhr.response))}})xhr.send()})}myAxios({url: https://hmajax.itheima.net/api/province}).then(result {console.log(result);document.querySelector(p).innerHTML result.list.join(br)}).catch(error {console.log(error);document.querySelector(p).innerHTML error.message})/script /body/htmlPromise - 链式调用 概念依靠then()方法会返回一个新生成的Promise对象特性继续串联下一环任务直到结束。 细节then()回调函数中的返回值会影响新生成的Promise对象的最终状态和结果 好处通过链式调用解决回调函数嵌套问题。 链式调用解决回调函数地狱省份——城市——地区查询 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodydiv classa/divdiv classb/divdiv classc/divscript srchttps://cdn.jsdelivr.net/npm/axios/dist/axios.min.js/scriptscriptlet pname const p axios({ url: http://hmajax.itheima.net/api/province }).then(result {pname result.data.list[0]document.querySelector(.a).innerHTML pnamereturn axios({ url: http://hmajax.itheima.net/api/city, params: { pname } })}).then(result {const cname result.data.list[0]document.querySelector(.b).innerHTML cnamereturn axios({ url: http://hmajax.itheima.net/api/area, params: { pname, cname } })}).then(result {const areaName result.data.list[0]document.querySelector(.c).innerHTML areaName})/script /body/html Promise.all 静态方法 概念合并多个Promise对象等待所有同时成功完成或某一个失败做后续逻辑。 需求当需要同一时间显示多个请求时就需要把多请求合并。 语法const p Promise.all([对象1, 对象2, ...]) async函数和await关键字 定义asyn和await关键字让我们可以用一种更简洁的方式写出基于Promise的异步行为而无需刻意地链式调用Promise。 概念在async函数内使用await关键字取代then函数等待获取Promise对象成功状态的结果值。 使用async函数和await关键字解决回调函数地狱 !DOCTYPE html html langenheadmeta charsetUTF-8meta nameviewport contentwidthdevice-width, initial-scale1.0titleDocument/title /headbodydiv classa/divdiv classb/divdiv classc/divscript srchttps://cdn.jsdelivr.net/npm/axios/dist/axios.min.js/scriptscriptasync 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 } })const areaName aobj.data.list[0]document.querySelector(.a).innerHTML pnamedocument.querySelector(.b).innerHTML cnamedocument.querySelector(.c).innerHTML areaName}getData()/script /body/htmlasync函数和await关键字的错误捕获 使用try…catch语句标记要尝试捕获的语句块并指定一个出现异常时抛出的响应。 语法 try {// 要执行的代码 } catch(error) {// error接收的是错误信息// try里代码如果有错误直接进入这里执行 }async function getData() {try {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 } })const areaName aobj.data.list[0]document.querySelector(.a).innerHTML pnamedocument.querySelector(.b).innerHTML cnamedocument.querySelector(.c).innerHTML areaName} catch (error) {console.dir(error)}}getData()
http://www.dnsts.com.cn/news/171494.html

相关文章:

  • 为女朋友做的网站浪尖工业设计公司官网
  • 做古玩生意哪些网站好怎么做网站站长
  • 酷维网站模版辽宁住房和城乡建设网站
  • 备案名称和网站名称不一致安阳刚刚发生的事
  • 努力把网站建设成为京东商城官网自营店
  • 环保网站建设说明网站建设推广和网络推广
  • 广东建设执业网站wordpress主题熊掌号
  • 泉州网站建设 推广潍坊哪家做网站做的最好
  • 北京智能网站建设制作网站建设 贴吧
  • 怎么自己做网站卖东西网站建设 蜂图网络
  • 响应式网站搭建公司简介模板英文版
  • 手机网站制作教程视频教程网页版梦幻西游周游方壶
  • apache网站开启gzip深圳短视频制作公司
  • google网站排名做网站买哪家的主机好
  • 网站开发建设赚钱吗影视软件开发定制
  • 万网主机 建网站seo推广收费
  • 响应式的网站做优化好吗html5可以做手机网站吗
  • 做网站的哪里便宜微信小程序项目源码
  • 东北网站建设公司空投网站建设
  • 域名注册网站排行招远做网站公司
  • 杭州知名的网站制作策略WordPress4.8中文的把
  • 小白怎样建设公司网站哪些网站可以做招生信息
  • 晋江论坛网优化推广网站seo
  • 青岛会议网站制作公司辽宁省建设教育协会网站
  • 招聘网站建设费用多少钱wordpress 版面
  • 企业网站建设可行性分析任务国外设计师灵感网站
  • 建设部网站怎么查询企业业绩推广普通话活动
  • 什么行业必须做网站wordpress 仿百度文库
  • 厚街外贸网站建设有wordpress还需要前端
  • 只做正品的购物网站怎么做链接推广产品