axios(二)XHR的理解和使用

本文详细介绍了XMLHttpRequest(XHR)的理解,包括它如何实现无刷新局部更新页面,区分普通HTTP与AJAX请求。同时,文章还探讨了XHR的API,如status、readyState、responseType等,并讲解了基于XHR的简单版axios实现,特点在于返回Promise并自动处理JSON响应。
摘要由CSDN通过智能技术生成

ch2. XHR的理解和使用

2.1 理解

  1. 使用XMLHttpRequest(XHR)对象可以与服务器交互,也就是发送ajax请求
  2. 前端可以获取到数据,而无需让整个的页面刷新
  3. 这使得Web页面可以只更新页面的局部,而不影响用户的操作

2.2 区别一般http请求与ajax请求

  1. ajax请求是一种特别的http请求

  2. 对服务器来说,没有任何区别,区别在浏览器端

  3. 浏览器端发请求:只有XHR或fetch发出的才是ajax请求,其他所有的都是非ajax请求

  4. 浏览器端接收到响应

    (1)一般请求:浏览器一般会直接显示响应体数据,也就是我们常说的刷新/跳转页面

    (2)ajax请求:浏览器不会对界面进行任何更新操作,只是调用监视的回调函数并传入相关数据

2.3 API

  1. XMLHTTPRequest(): 创建XHR对象的构造函数

  2. status: 响应状态码值,比如200,400

  3. statusText: 响应状态文本

  4. readyState: 标识请求状态的只读属性

    0:初始

    1:open()之后

    2:send()之后

    3:请求中

    4:请求完成

  5. onreadystatechange: 绑定readyState改变的监听

  6. responseType: 指定响应数据类型,如果是json,得到响应后自动解析响应体数据

  7. response: 响应体数据,类型取决于responseType的指定

  8. timeout: 指定请求超时。默认为0没有限制

  9. ontimeout: 绑定超时的监听

  10. onerror: 绑定请求网络错误的监听

  11. open(): 初始化一个请求,参数为:{method, url, async}

  12. send(data): 发送请求

  13. abort(): 中断请求

  14. getResponseHeader(name): 获取指定名称的响应头值

  15. getAllResponseHeader(): 获取所有响应头组成的字符串

  16. setResponseHeader(name, value): 设置请求头

2.4 XHR的ajax封装(简单版axios)

2.4.1 特点

  1. 函数的返回值为promise,成功的结果为response,异常的结果为error

  2. 能处理多种类型的请求:GET/POST/PUT/DELETE

  3. 函数的参数为一个配置对象

    {

    ​ url: ’ ', //请求地址

    ​ method: ’ ', //请求方式为GET/POST/PUT/DELELTE

    ​ params: { }, //GET/DELETE请求的query参数

    ​ data: { }, //POST或DELETE请求的请求体参数

    }

  4. 响应json数据自动解析为js

2.4.2 实例

function axios({
   
    url,
    method = 'GET',
    params = {
   },
    data = {
   }
}){
   
    //返回一个promise对象
    return new Promise((resolve, reject) => {
   
        //处理method
        method = method.toUpperCase()
        //处理query参数(拼接到url)	id=1&xxx='abc'
        let queryString = ''
        Object.keys(params
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值