本文介绍: 在客户端服务器发送请求之后,直到服务器处理逻辑产生响应之后客户端才能执行其他操作比如搜索框内输入一个网站网址访问后,只有整个html页面加载出来了,但是点击任何一个地方都没法跳转,只有整个页面完全加载完成,在服务器端响应完成之后,在网页上的操作才会有反应。

Ajax简介:

 同步异步 

同步请求

客户端向服务器发送请求之后,直到服务器处理后逻辑产生响应之后客户端才能执行其他操作

比如搜索框内输入一个网站网址访问后,只有整个html页面加载出来了,但是点击任何一个地方都没法跳转,只有整个页面完全加载完成,在服务器端响应完成之后,在网页上的操作才会有反应。

异步请求

在发送一个请求,在网页还是可以执行其他操作,不需要等待一个请求响应结果

 原生Ajax

 前后交互的主流数据格式:json

Ajax核心: XMLHttpRequest对象

测试案例 


<body&gt;
    <input type="button" value="获取数据" onclick="getData()" height="300px"&gt;
    <div id="div1"&gt;</div&gt;
</body&gt;

<script&gt;
    function getData() {
        //1.创建XMLHttpRequest
        var xhr = new XMLHttpRequest();
        //2.发送异步请求
        xhr.open('GET', 'http://yapi.smart-xwork.cn/mock/169327/emp/list');
        xhr.send();
        //3.获取服务响应数据
        xhr.onreadystatechange = function () {
            if (xhr.readyState == 4 &amp;&amp; xhr.status == 200) {
                document.getElementById('div1').innerHTML = xhr.responseText;
            }
        }
    }
</script>

  

点击过后输出如下,成功通过Ajax服务器数据展示到页面上 

 Axios使用

在上面的原生Ajax请求使用起来比较不便,所以现在有了一个基于原生Ajax封装起来的Axios

定义:  

使用方式

axio基本格式

传递一个对象包含methodurl两个属性一个请求方式一个请求路径

get方式传参可以url后面使用?key=value的方式传参

post方式传参:在请求体当中传参数,使用一个名为data的属性。

获取服务器传递回来的数据在后面加上.then(),在括号里面传递一个函数,在这里使用箭头函数的形式。通过函数里面接收一个js对象result,通过result.data拿到响应数据

axio({

method:"请求方法",

url:"请求路径"

}).then(函数);

 第一步引入axios文件

新建一个js文件夹,将从官方网站下载来的axios-0.18.0.js文件丢进去

html里面引入

  <script src="jsaxios-0.18.0.js"></script>

第二步:准备html页面

<body>
    <input type="button" value="获取数据GET" onclick="get()">
    <input type="button" value="删除数据POST" onclick="post()">
</body>

<script>
    function get(){
        axios({
            method: "get",
            url: "http://yapi.smart-xwork.cn/mock/169327/emp/list"
        }).then(result => {
            console.log(result.data);
        })
    }
    function post(){
         axios({
            method: "post",
            url: "http://yapi.smart-xwork.cn/mock/169327/emp/deleteById",
            data: "id=1"
        }).then(result => {
            console.log(result.data);
        })
    }
</script>

在上面得到代码里面我们可以看见,get请求用于进行查询post请求用于进行删除模拟前后联动增删查改中的两个操作,运行效果如下

axios支持的不同请求方式 

 使用简化的方式发送get和post请求

 axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then(result => {
            console.log(result.data);
        })



 axios.post("http://yapi.smart-xwork.cn/mock/169327/emp/deleteById","id=1").then(result => {
            console.log(result.data);
        })

案例:

 使用到vue还要引入一个vue.js文件,同时指定vue接管的区域id=”app“的区域,在该区域定义一个表格.vue生命周期中有八个钩子函数,加载完成之后使用钩子函数发送异步请求。如mounted(),拿到返回数据赋值vue中的数据模型emps:[] 

拿到数据后在视图层需要遍历展示拿到的数据即可

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Ajax-Axios-案例</title>
    <script src="js/axios-0.18.0.js"></script>
    <script src="js/vue.js"></script>
</head>
<body>
    <div id="app">
        <table border="1" cellspacing="0" width="60%">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>图像</th>
                <th>性别</th>
                <th>职位</th>
                <th>入职日期</th>
                <th>最后操作时间</th>
            </tr>

            <tr align="center" v-for="(emp,index) in emps">
                <td>{{index + 1}}</td>
                <td>{{emp.name}}</td>
                <td>
                    <img :src="emp.image" width="70px" height="50px">
                </td>
                <td>
                    <span v-if="emp.gender == 1">男</span>
                    <span v-if="emp.gender == 2">女</span>
                </td>
                <td>{{emp.job}}</td>
                <td>{{emp.entrydate}}</td>
                <td>{{emp.updatetime}}</td>
            </tr>
        </table>
    </div>
</body>
<script>
    new Vue({
       el: "#app",
       data: {
         emps:[]
       },
       mounted () {
          //发送异步请求,加载数据
          axios.get("http://yapi.smart-xwork.cn/mock/169327/emp/list").then(result => {
            this.emps = result.data.data;
          })
       }
    });
</script>
</html>

原文地址:https://blog.csdn.net/m0_62327332/article/details/129703303

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_28012.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除!

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注