Axios

  |   0 评论   |   0 浏览

Axios

https://www.bilibili.com/video/BV1FT411n7Dz?share_source=copy_web&vd_source=8d3eeabb3653b82cefbc70fe4d8892a1

1.基本说明

1.axios 是独立于 vue 的一个项目,不是 Vue 的一部分

2.axios 通常和 Vue 一起使用,实现 Ajax 操作

3.Axios 是一个基于 promise 的 HTTP 库

2.学习文档

https://javasoho.com/axios/

image-20220716231433093

3.Axios 库文件

1、使用 axios 需要引入 axios 库文件

2、可以直接引入

<script src="https://unpkg.com/axios/dist/axios.min.js"></script>

3、也可以下载 axios.min.js ,在本地引入

image-20220716231612974

4.Axios 应用实例

1.需求说明/图解

● 需求: 在 Vue 项目中使用 Axios, 从服务器获取 json 数据, 显示在页面

image-20220716231703583

2.代码实现

1.创建response.data.json,模拟后端响应的json数据

{
  "success": true,
  "message": "成功",
  "data": {
    "items": [
      {
        "name": "牛魔王",
        "age": 800
      },
      {
        "name": "红孩儿",
        "age": 500
      },
      {
        "name": "蜈蚣精",
        "age": 200
      }
    ]
  }
}

2.创建axios_quick_start.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>axios的应用实例</title>
</head>
<body>
<!--页面视图-->
<div id="app">
    <h1>{{msg}}</h1>
    <table border="1" width="200">
        <tr>
            <td>名字</td>
            <td>年龄</td>
        </tr>
        <tr v-for="monster in monsterList">
            <td>{{monster.name}}</td>
            <td>{{monster.age}}</td>
        </tr>
    </table>
</div>
<script src="vue.js"></script>
<script src="axios.min.js"></script>
<script>
    new Vue({
        el: "#app",
        data: {
            msg: "妖怪信息列表",
            monsterList: [] //表示妖怪的信息数组
        },
        methods: {//自定义方法
            list() {//发送ajax请求,获取数据 axios
                /*
                    1. axios.get() 表示发出ajax请求
                    2. http://localhost:63342/axios/data/response.data.json 表示请求的url
                       要根据实际情况来填写
                    3. axios发出ajax请求的基本语法
                       axios.get(url).then(箭头函数).then(箭头函数)...catch(箭头函数)
                       (1) 如果get请求成功就进入到第一个then()
                       (2) 可以再 第一个then()中继续发出axios的ajax请求
                       (3) 如果有异常, 会进入到 catch(箭头函数)
                    4. list在生命周期函数created() 中调用
                 */
                axios.get("http://localhost:63342/llp-vue/data/response.data.json")
                    .then(responseData => {
                        console.log("responseData= ", responseData)
                        //使用JSON.stringify(json) 把json对象转成一个字符串,方便观察
                        console.log("responseData= ", JSON.stringify(responseData));
                        // console.log("responseData.data= ", responseData.data)
                        // console.log("responseData.data.data= ", responseData.data.data)
                        console.log("responseData.data.data.item= ", responseData.data.data.items)
                        //将妖怪列表数组信息, 绑定到 data数据池的 monsterList
                        this.monsterList = responseData.data.data.items;
                        //可以再次发出ajax请求, 发出了第二次ajax请求, 和promise发出多次请求相似
                        // return axios.get("http://localhost:63342/axios/data/response.data.json")
                    })
                    // .then(responseData => {
                    //     console.log("第二次axios发出 ajax请求responseData= ", responseData)
                    // })
                    .catch(err => {
                    console.log("异常=", err)
                    })
            }
        },
        //在页面渲染之前
        created() {
            this.list();
        }
    })
</script>
</body>
</html>

3.完成测试

image-20220717094702146

4.注意事项和细节

1.将 JSON 对象转成 JSON.stringify(response)

2.格式化输出 JSON 字符串,方便观察分析

json格式化网站 jsn.cn: https://www.json.cn/

image-20220716231833796