Skip to content

axios

约 868 字大约 3 分钟

2025-05-02

AJAX的应用

1. get请求 XMLHttpRequest()

// 1.创建ajax对象
let xhr = new XMLHttpRequest()

// 2. 设置请求方式地址
xhr.open('请求方式''请求地址')

//3. 发生请求
xhr.send()

// 4. 监听  ajax的步骤状态改变
xhr.onreadystatechang = function( ){ // 此种监听包含5个生命周期
    // 判断步骤 是否到了最后一步1-5  网路是否畅通(状态码)
    
    // 第四步:后端把数返回前段   200-299表示成功
    if(xhr.readyState == 4 && xhr.tatus == 200) {
    // 获取后端数据
    console.log(xhr.responseText)
}
}
 xhr.addEventListener('loadend', () => { // 此种监听是请求结束后触发
          if (xhr.status >= 200 && xhr.status < 300) {
            resolve(JSON.parse(xhr.response))
          } else {
            reject(new Error(xhr.response))
          }
        })

1.1 请求方式

前后端约定的请求模式

  • get 前端获取后端数据
  • post 前端主动发送数据到后端
  • put 上传 前端主动发送数据到后端
  • patch 前端获取后端数据[格式与GET不同]
  • delete 删除数据

1.2 请求地址

后端提供接口地址

接口说明文档

协议://服务器地址:端口号/接口地址
http://gotang.cn:8000/

1.3 网路状态码

  • 400 找不到 一般情况都是 请求地址 和请求方式
  • 500 服务器错误
  • 501 权限认证出错
  • 200 成功
  • 304 重定向(服务端提供了其他地址跳转)

2. post请求

// 1. 实例化Axios
let xhr = new XMLHttpRequest()
// 2. 设置请求方式【不可写请求参数】
xhr.open('请求方式''请求地址')
// 3. 设置请求头
xhr.setRequestHeader('Content-Type', 'application/json')
xhr.setRequestHeader('Content-Type', 'application/x-ww-form-urlencoded')
// 4. 发送(格式与请求头一样)
xhr.send(data)
xhr.send("name=张三&&age=12")

// 5. 监听
xhr.onreadystatechang = function( ){
    // 判断步骤 是否到了最后一步1-5  网路是否畅通(状态码)
    
    // 第四步:后端把数返回前段   200-299表示成功
    if(xhr.readyState == 4 && xhr.tatus == 200) {
    // 获取后端数据
    console.log(xhr.responseText)
}

3. 常见状态码

  • 400 找不到 一般情况都是 请求地址 和请求方式
  • 500 服务器错误
  • 501 权限认证出错
  • 200 成功
  • 304 重定向(服务端提供了其他地址跳转)

4. 文件上传

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <input type="file">
  <button>上传</button>
  <img src="" alt="">

  <script>
    const int = document.querySelector('input')
    const but = document.querySelector('button')
    const img = document.querySelector('img')


    but.addEventListener('click', () => {
      // 创建fromdate对象
      let file = int.files[0]
      let fd = new FormData()
      fd.append('file', file) // 前面的key后端给

      let xhr = new XMLHttpRequest()

      xhr.open('post', 'http://8.137.157.16:8099/test/upload')

      xhr.send(fd)

      xhr.onreadystatechange = () => {
        // 第四步:后端把数返回前段   200-299表示成功
        if (xhr.readyState == 4 && xhr.status == 200) {
          // 获取后端数据
          let url = JSON.parse(xhr.response).imgUrl

          img.src = 'http://8.137.157.16:8099' + `${url}`

        }
      }
    })

  </script>
</body>

</html>

5. 排错

浏览器 控制台 找Network 点Fetch/XHR

  • 1看 请求地址
  • 2看 请求方式和 参数
  • 3看 请求的状态码
  • 4看 后端的返回值

6. 取消监听


dom.removeEventListner('click', 执行函数)

7. ajax与promise结合封装【axios】

ajax与promise封装出来的函数网路请求库

https://unpkg.com/axios/dist/axios.min.js

axios使用

  • get请求

    axios.post('请求地址?请求参数',data).then(function(res){
        // 已经将JSON转
    }).catch(function(err){
        
    })
  • post请求

    https://unpkg.com/axios/dist/axios.min.js
  • 发送文件

     // 创建fromdate对象
          let file = inp.files[0]
          let fd = new FormData()
          fd.append('file', file) // 前面的key后端给
    
    axios.post('请求地址',fd).then(function(res){
        // 已经将JSON转
    }).catch(function(err){
        
    })

    window 对象

    window 顶级对象 装了关于DOM 和BOM 相关操作

    bom: loction history

    dom:节点文档

window 挂属性

window.a = 100

开源网站

github

gitee

npm