AJAX入门

什么是 AJAX

![](https://i-blog.csdnimg.cn/direct/e764bebe618142a1aeaf7abab22dc2a4.png) 怎么用 AJAX ![](https://i-blog.csdnimg.cn/direct/5ea4ae0542ca4a68acc32a365e6c7c03.png)**语法:** > 引入 axios.js: https://cdn.jsdelivr.net/npm/axios/dist/axios.min.js > ![](https://i-blog.csdnimg.cn/direct/5abba335328c4fc8a1c525217602130e.png) *** ** * ** *** ## 什么是 URL ![](https://i-blog.csdnimg.cn/direct/bde70dc2f2c5481c94f852158eac6a2d.png) ![](https://i-blog.csdnimg.cn/direct/0d8c95c011a34694852b60b4bb42c4d5.png) > 概念:URL 就是统一资源定位符,简称网址,用于访问网络上的资源 组成: ![](https://i-blog.csdnimg.cn/direct/d31440e48a074e8a9be37544658946a0.png) ![](https://i-blog.csdnimg.cn/direct/47917cbe2c114c32948fd5a5da798683.png) *** ** * ** *** ## URL 查询参数 > 定义:浏览器提供给服务器的 额外信息 ,让服务器返回浏览器想要的数据 > 语法:http://xxxx.com/xxx/xxx ? 参数名1=值1 \& 参数名2=值2 ![](https://i-blog.csdnimg.cn/direct/0248cf6f77f94491b2108c472c4be9b9.png) **axios-查询参数** > 语法:使用 axios 提供的 params 选项 > 注意:axios 在运行时把参数名和值,会拼接到 url ?参数名=值 > 城市列表: http://hmajax.itheima.net/api/city?pname=河北省 ![](https://i-blog.csdnimg.cn/direct/c9964896fd40444babe24dd7653cca28.png) *** ** * ** *** ## **常用请求方法和数据提交** **常用方法请求** ![](https://i-blog.csdnimg.cn/direct/cf1896f3b8a94a9c8781ed07f0e196bc.png) **axios 请求配置** > url:请求的 URL 网址 > method :请求的方法, GET 可以省略(不区分大小写) > data :提交数据 > ![](https://i-blog.csdnimg.cn/direct/5537ae7353da4a6cb55aa6fe55ee85be.png) ## axios 错误处理 > 场景:再次注册相同的账号,会遇到报错信息 > 处理:用更直观的方式,给 普通用户 展示错误信息 ![](https://i-blog.csdnimg.cn/direct/c3452ea72953487fb4a4c0b22abe9ffa.png) > **语法:在 then 方法的后面,通过点语法调用 catch 方法,传入回调函数并定义形参** > > ![](https://i-blog.csdnimg.cn/direct/e9a46e3f96a14b19b61b8e78f2de4698.png) ## HTTP 协议-请求报文 > HTTP 协议:规定了浏览器发送及服务器返回内容的 格式 > 请求报文 :浏览器按照 HTTP 协议要求的 格式 ,发送给服务器的 内容 > 请求报文的格式 > 请求报文的组成部分有: > 1. 请求行:请求方法,URL ,协议 > 2. 请求头: 以键值对的格式携带的附加信息,比如: Content-Type > 3. 空行:分隔请求头,空行之后的是发送给服务器的资源 > 4. 请求体:发送的资源 > > ![](https://i-blog.csdnimg.cn/direct/6b7aa0ad034d4c8baf8b25d7a6420cc4.png) > > ![](https://i-blog.csdnimg.cn/direct/1412e25f82ba49d6a044d9d9c328dc45.png) ## HTTP 协议-响应报文 > HTTP 协议:规定了浏览器发送及服务器返回内容的 格式 > 响应报文 :服务器按照 HTTP 协议要求的 格式 , 返回给浏览器的 内容 > 1. > 响应行(状态行) :协议、 HTTP 响应状态码 、状态信息 > 2. > 响应头 :以键值对的格式携带的附加信息,比如: Content-Type > 3. > 空行:分隔响应头,空行之后的是服务器返回的资源 > 4. > 响应体 : 返回的资源 > ![](https://i-blog.csdnimg.cn/direct/89e7fdc05b384c279d3af8c1464daaf4.png) **HTTP 响应状态码** > HTTP 响应状态码:用来表明请求 是否成功 完成 > 比如: 404(服务器找不到资源) ![](https://i-blog.csdnimg.cn/direct/f7a23f4abb48456d9dbc93a058aeece3.png) ## 接口文档 > 接口文档 : 描述 接口 的文章 (后端工程师) > 接口 :使用 AJAX 和服务器通讯时, 使用的 URL , 请求方法 , 以及参数 ## form-serialize 插件 ![](https://i-blog.csdnimg.cn/direct/9043b930c57e44d0b9c3f12b0ea2e4d5.png) ## AJAX原理 - XMLHttpRequest 定义 ![](https://i-blog.csdnimg.cn/direct/224dca37678a4f9ba9cea8322c1d4d2c.png) 关系:axios 内部采用 XMLHttpRequest 与服务器交互 ![](https://i-blog.csdnimg.cn/direct/2209f2b47f5649e08d3cac3f5f0f57be.png) ### 使用 XMLHttpRequest > 步骤: > 1. 创建 XMLHttpRequest 对象 > 2. 配置 请求方法 和请求 url 地址 > 3. 监听 loadend 事件,接收 响应结果 > 4. 发起请求 ![](https://i-blog.csdnimg.cn/direct/8c672f469b6d4ef89db4d0b9677d8ddd.png) ### XMLHttpRequest - 查询参数 > 定义:浏览器提供给服务器的 额外信息 ,让服务器返回浏览器想要的数据 > 语法:http://xxxx.com/xxx/xxx ? 参数名1=值1 \& 参数名2=值2 ![](https://i-blog.csdnimg.cn/direct/9e523bd873dd44e5b29dafd43168b950.png) ### XMLHttpRequest - 数据提交 > 需求:通过 XHR 提交用户名和密码,完成注册功能 > 核心: > 请求头 设置 Content-Type:application/json > 请求体 携带 JSON 字符串 ![](https://i-blog.csdnimg.cn/direct/cb9bda978c964c75a0c17e1c7c57327d.png) ## Promise > ![](https://i-blog.csdnimg.cn/direct/2af55ea5be2d438583fb19e9aeac6294.png) > 好处: > 1. 逻辑更清晰 > 2. 了解 axios 函数内部运作机制 > 3. 能解决回调函数地狱问题 > ![](https://i-blog.csdnimg.cn/direct/4409564c52674b73b8eb27133032bff1.png) ![](https://i-blog.csdnimg.cn/direct/2f921067870341439d342dec002fae73.png) > 回调函数地狱 > 需求:展示默认第一个省,第一个城市,第一个地区在下拉菜单中 > 概念:在回调函数中 嵌套回调函数 ,一直嵌套下去就形成了回调函数地狱 > 缺点:可读性差,异常无法捕获,耦合性严重,牵一发动全身 > ![](https://i-blog.csdnimg.cn/direct/c93de7a345954d4685def829a9157d08.png) Promise - 链式调用 > 概念:依靠 then() 方法会返回一个 新生成的 Promise 对象 特性,继续串联下一环任务,直到结束 > 细节:then() 回调函数中的 返回值 ,会影响新生成的 Promise 对象 最终状态和结果 > 好处:通过链式调用,解决回调函数嵌套问题 ![](https://i-blog.csdnimg.cn/direct/d7bc6a7a523549348a49e78ce0b2253b.png)

相关推荐
我爱加班、、13 分钟前
Chrome安装最新vue-devtool插件
javascript·vue.js·chrome·vue-devtool
weixin_4738947725 分钟前
前端服务器部署分类总结
前端·网络·性能优化
LuckyLay43 分钟前
React百日学习计划-Grok3
前端·学习·react.js
澄江静如练_1 小时前
小程序 存存上下滑动的页面
前端·javascript·vue.js
互联网搬砖老肖1 小时前
Web 架构之会话保持深度解析
前端·架构
m0_513962531 小时前
vue-ganttastic甘特图label标签横向滚动固定方法
javascript·vue.js·甘特图
菜鸟una1 小时前
【taro3 + vue3 + webpack4】在微信小程序中的请求封装及使用
前端·vue.js·微信小程序·小程序·typescript·taro
hao_04131 小时前
elpis-core: 基于 Koa 实现 web 服务引擎架构设计解析
前端
码农黛兮_462 小时前
HTML、CSS 和 JavaScript 基础知识点
javascript·css·html
狂野小青年2 小时前
npm 报错 gyp verb `which` failed Error: not found: python2 解决方案
前端·npm·node.js