Ajax 常用简述

url的组成

协议 、域名、资源路径

常用

axios ~库

url ~引入网址

GET ~请求从服务器获取数据

POST ~请求向服务器提交数据

method ~指定请求方法(默认是 GET)

data ~提交数据

params ~获取数据

pname ~要获取什么数据

.then ~处理数据

.catch ~处理错误

axios({
      url: 'http://hmajax.itheima.net/api/register',
      // 指定请求方法
      method: 'post',
      data: {
        username: 'abc007',
        password: '7654321'
      }
    }).then(result => {
      console.log(result)
    }).catch(item => {
      console.log(item.response.data.message)
      alert(item.response.data.message)
    })

拓展:幂等性 注册()

GET 是幂等性的

POST 是非幂等性的

幂等:发送请求后服务器的数据不会有任何修改

非幂等:发送请求后可能会对服务器的数据存在修改

报文

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

请求报文:浏览器按照http协议要求的格式,发送给服务器的内容(请求头、请求行、请求空行、请求体)

响应报文:服务器按照http协议要求的格式,发给浏览器的数据(响应头、响应行、响应空行、响应体)

HTTP 响应状态码

前端只需要关注 2开头的和 4开头的

2 开头表示成功 (200)

4 开头表示未找到资源 (404)

form-serialize 插件

使用插件快速收集表单数据

使用时 input 内必须有 [nume=" " ] ,没有会获取不到元素

用法:1、传入表单的元素 2、传入配置项

hash:收集参数的格式,true 表示转成对象,false 表示转成 查询参数 形式的字符串

empty:是否收集空值,true 表示收集为空字符串 ,false 表示不收集,什么都没有

scrollHeight:内容的高度,当盒子有滚动条时说明内容的高度超过了盒子本身

scrollTop:盒子滚出去的距离

表单的 hidden

隐藏域:在页面上看不到

有什么用?用户不需要对他进行操作,但是提交数据时可能要跟随表单一起提交,可以设置 value 和提取 value 属性

图片上传

表单的 file :文件选择元素

change 事件被<input>, <select>, 和<textarea> 元素触发。

//触发情况 1.<input type="radio"> 和 <input type="checkbox"> 的默认选项被修改时(通过点击或者键盘事件)。

2.当用户完成提交动作时 (例如:点击了 <select>中的一个选项,从 <input type="date">标签选择了一个日期, 通过 <input type="file">标签上传了一个文件等 )。

3.当标签的值被修改并且失去焦点后,但并未进行提交 (例如:对<textarea> 或者<input type="text">的值进行编辑后)。

路径参数

路径参数,可以直接添加数据

url:'http://hmajax.itheima.net/api/books/{id}‘

XMLHttpRequest

XHR 对象用于服务器交互

XMLHttpRequest 的方法 :

.status 用于获取状态码

.response 用于获取结果

.resolve() 成功

.reject 失败

.send() 发送请求

.message 错误

loadend 监听事件

使用步骤:

1.创建 XMLHttpRequest 对象

2.配置请求方法和请求 url 地址

3.监听 loadend 事件 ,接收响应结果

4.发起请求

Promise

(管理)一个异步操作最终状态和结果值的对象

Promise - 三种状态

待定(pending) :初始状态,既没有被兑现,也没有被拒绝 已兑现(fulfilled) :意味着,操作成功完成 已拒绝(rejected) :意味着,操作失败

对象转参数字符串

URLSearchParams 对象转参数字符串

在使用 XMLHttpRequest 时,发送请求的 URL 不支持中文,所有中文都会被自动 URL 编码,服务器收到后会自动解码,所以程序员不需要额外关心

同步代码和异步代码

什么是同步代码?

逐行执行,原地等待结果后,才继续向下执行

什么是异步代码?

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

回调函数地狱

概念:在回调函数中嵌套回调函数,一直嵌套下去就形成了回调函数地狱 缺点:可读性差,异常无法捕获,耦合性严重,牵一发动全

Promise 链式调用

Promise 的 .then 回调函数中可以继续返回一个 Promise 对象,在 .then 回调函数中返回的 Promise 对象结果会传递给下一个 .then 形成了链式调用

async 和 await 使用

await 的代码只是看起来是同步的,本质还是异步代码,可以理解为 await 返回值及以后的代码都是 .then 回调函数中的代码,我们优化了开发的语法,让代码看起来更简洁,更容易读懂

async function re() {
​
    const provinceRes = await axios({ url:'http://hmajax.itheima.net/api/province' })
​
    document.querySelector('.province').innerHTML = provinceRes.data.list[0]
    }
   re()

async 和 await 里边要捕获异常要用 try ~catch 来捕获异常,因为 try ~catch 能捕获同步代码的异常,

promise 的异常可以使用 .catch 方法捕获

Promise 的静态方法 all

参数: promise 对象数组

返回值:一个新的 Promise 里面存放了刚刚批量执行的结果

Promise.all() 传数组进去,得到的也是数组

清除所有的 localStorage 中的数据 ~ .clear()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值