# AJAX-XMLHttpRequest/Promise

111 阅读1分钟

一.AJAX原理 - XMLHttpRequest

  1. AJAX 是浏览器与服务器通信的技术,采用 XMLHttpRequest 对象相关代码

  2. axios 是对 XHR 相关代码进行了封装,让我们只关心传递的接口参数

  3. 学习 XHR 也是了解 axios 内部与服务器交互过程的真正原理

    语法:

    // 1. 创建 XMLHttpRequest 对象

    const xhr = new XMLHttpRequest()

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

    ​ xhr**.open**('get', 'hmajax.itheima.net/api/provinc…')

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

    ​ xhr**.addEventListener('loadend', ()** => {

    ​ console.log(xhr.response) //接受响应结果

    ​ console.log(xhr.status) //接受响应状态码

    ​ })

    ​ // 4.发起请求

    ​ xhr**.send()**

1.png

查询参数

定义:浏览器提供给服务器的额外信息,让服务器返回浏览器想要的数据 语法:xxxx.com/xxx/xxx?参数名…

2.png

3.png

数据提交

需求:通过 XHR 提交用户名和密码,完成注册功能 核心: 请求头设置 Content-Type:application/json 请求体携带 JSON 字符串

4.png

二.Promise

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

语法:

const p = new Promise((resolve,reject)=>{

​ // 在回调函数中,可以执行异步任务(定时器 / AJAX)

​ setTimeout(()=>{

resolve('成功') // 参数1:resolve 成功的回调

reject('失败')// 参数2:reject 失败的回调

​ },3000)

​ })

​ p.then(result*=>*{

​ console.log(result);

​ }).catch(error*=>*{

​ console.log(error);

​ })

Promise - 三种状态

作用:了解Promise对象如何关联的处理函数,以及代码执行顺序 概念:一个Promise对象,必然处于以下几种状态之一 待定(pending) :初始状态,既没有被兑现,也没有被拒绝 已兑现(fulfilled) :意味着,操作成功完成 已拒绝(rejected) :意味着,操作失败

注意:Promise对象一旦被兑现/拒绝 就是已敲定了,状态无法再被改变

5.png