前端基础篇-深入了解 Ajax 、Axios

news2024/11/25 4:32:01

 🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 Ajax 概述

        2.0 Axios 概述

        3.0 综合案例


        1.0 Ajax 概述

        通过 Ajax 可以给服务器发送请求,并获取服务器响应的数据。异步交互是指,可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术,如:用户名是否可用的校验等等。

         简单来说,Ajax 的作用就是用来发送请求给服务器,得到响应后获取数据。

举个例子:

<!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>
    <div id="id1">

    </div>
    
</body>
<script>

    /* 1.0 创建对象 */
    var xmlHttpRequest = new XMLHttpRequest();

    /* 2.0 发送异步请求 */
    xmlHttpRequest.open("get","http://api.doc.jiyou-tech.com/mock/6391/text");
    xmlHttpRequest.send();

    /* 3.0 获取数据 */
    xmlHttpRequest.onreadystatechange = function(){
        if(xmlHttpRequest.readyState == 4 && xmlHttpRequest.status == 200){
            document.getElementById("id1").innerHTML = xmlHttpRequest.responseText;
        }
    }

</script>
</html>

运行结果:

      成功获取服务器的响应,xmlHttpRequest.readyState 的值会赋值为 4 ,status 的值为 200 。

手册: AJAX - XMLHttpRequest 对象 (w3school.com.cn)

        2.0 Axios 概述

        Axios 是对原生的 Ajax 进行了封装,简化书写,快速开发。作用同样是给服务器发送请求,并获取服务器响应的数据。

引入 Axios 的 js 文件:

        采取的是 CDN 的方式导入到 HTML 中。

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

语法结构:

<script>
    axios({
        methods:"get",
        url:"http://api.doc.jiyou-tech.com/mock/6391/text"
    }).then((result) => {
        alert(result);
    })
    axios({
        methods:"post",
        url:"http://api.doc.jiyou-tech.com/mock/6391/text"
    }).then((result) => {
        alert(result);
    })
</script>

         如果在 get 中有参数添加,直接在 url 后面接上 ? 后面加上参数即可;如果在 post 中有参数添加,需要对象 data 中添加参数,如:

    axios({
        methods:"post",
        url:"http://api.doc.jiyou-tech.com/mock/6391/text",
        data:"id=1"
    }).then((result) => {
        alert(result);
    })

还有更加简便的写法:

<script>
axios.get("http://api.doc.jiyou-tech.com/mock/6391/text").then((result)
 => { alert(result);
    })
axios.post("http://api.doc.jiyou-tech.com/mock/6391/text","id=1").then((result)
 => { alert(result);
    })    
</script>
        

        一般用这种方式比较多。

        使用 Axios 发送请求,并获取响应结果

举个例子:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="app">
        <span >{{emps.name}}</span>
    </div>
    
</body>
<script>
    new Vue({
        el:"#app",
        data:{
            emps:""
        },
        mounted() {
            axios.get("http://api.doc.jiyou-tech.com/mock/6391/text").then((result) => {
                this.emps = result.data;
            })
        }
    
    })
</script>
</html>

        利用 Axios 获取数据后,交给 Vue 进行网页的渲染。

        3.0 综合案例

        利用 Axios 向服务器发送请求,并返回服务器响应的结果,再交给 vue 对网页进行渲染。

模拟服务器中的数据:

代码如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.min.js"></script>

    <script src="https://unpkg.com/axios/dist/axios.min.js"></script>
</head>
<body>
    <div id="app">
        <table border="1px" cellspacing="0px" align="center" width="400px">
            <tr>
                <th>ID</th>
                <th>姓名</th>
                <th>年龄</th>
                <th>性别</th>
                <th>成绩</th>
            </tr>
            <tr v-for="(emp, index) in emps">
                <td align="center">{{index+1}}</td>
                <td align="center">{{emp.name}}</td>
                <td align="center">{{emp.age}}</td>
                <td align="center" v-if="emp.gender == 1">男</td>
                <td align="center" v-if="emp.gender == 2">女</td>
                <td align="center">{{emp.score}}</td>
            </tr>
        </table>
    </div>
</body>
<script>
    new Vue({
        el:"#app",
        data:{
            emps:[]
        },
        mounted() {
            axios.get("http://api.doc.jiyou-tech.com/mock/6407/text").then((result) 
             => {  this.emps = result.data.data
                })
        }
    })
</script>
</html>

        还用到了 vue 生命周期中的 mounted() ,挂载结束后,就会自动调用该函数。this 将获取的 json 赋值给当前对象的 emps 。

运行结果:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1531466.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高效编写产品规格书的秘诀与注意事项

高效编写产品规格书的秘诀&#xff1a;学会利用简单的工具&#xff0c;写出效果最佳的产品规格书。比如&#xff0c;你可以使用HelpLook、Markdown编辑器、LaTeX、notion等。 在快节奏的商业环境中&#xff0c;产品规格书是企业向市场展示产品特性和优势的重要工具。一份清晰、…

Linux——进程通信(三)命名管道

前言 我们在之前学习了匿名管道与匿名管道的应用——进程池&#xff0c;但是匿名管道的通信&#xff0c;需要有血缘关系的进程&#xff08;通过fork创建的进程们&#xff09;&#xff0c;如果我想让两个毫不相干的进程进行通信&#xff0c;可以采样命名管道的方式&#xff08;…

如何在Windows系统使用VS Code制作游戏网页并实现无公网IP远程访问

文章目录 前言1. 编写MENJA小游戏2. 安装cpolar内网穿透3. 配置MENJA小游戏公网访问地址4. 实现公网访问MENJA小游戏5. 固定MENJA小游戏公网地址 前言 本篇教程&#xff0c;我们将通过VS Code实现远程开发MENJA小游戏&#xff0c;并通过cpolar内网穿透发布到公网&#xff0c;分…

提升Java编程安全性-代码加密混淆工具的重要性和应用

在Java编程领域中&#xff0c;保护代码安全性和知识产权至关重要。本文旨在探讨代码加密混淆工具在提升代码安全性和保护知识产权方面的重要性。我们将介绍几款流行的Java代码加密混淆工具&#xff0c;如ProGuard、DexGuard、Jscrambler、DashO和ipaguard&#xff0c;并分析它们…

【RabbitMQ】【Docker】基于docker-compose构建rabbitmq容器

本文通过docker-compose构建一个单体的rabbtimq容器。 1&#xff0c;docker、docker-compose环境 首先需要有docker和docker-compose环境&#xff0c;docker安装[1]&#xff0c;docker-compose安装[2]。 通过下列命令确定docker、docker-compose是否安装成功。 [root192 ge…

单片机LED灯闪烁

延时函数计算&#xff08;相关代码生成&#xff09;&#xff1a; #include "reg52.h" #include <INTRINS.H> void Delay500ms() //11.0592MHz {unsigned char i, j, k;_nop_();_nop_();i 22;j 3;k 227;do{do{while (--k);} while (--j);} while (--i); }vo…

利用Xinstall,实现安装页面快速拉起App,推广效果倍增!

在移动互联网时代&#xff0c;App推广已成为广告主和开发者的重要任务。然而&#xff0c;面对激烈的市场竞争&#xff0c;如何提升推广效率、洞悉推广效果并衡量广告ROI&#xff0c;成为摆在他们面前的难题。今天&#xff0c;我们将聚焦一个关键环节——安装页面拉起App&#x…

Grid数据增强算法

算法原理 class Grid(object):def __init__(self, d1, d2, rotate1, ratio0.5, mode0, prob0.8):self.d1 d1self.d2 d2self.rotate rotateself.ratio ratioself.mode modeself.st_prob self.prob probdef set_prob(self, epoch, max_epoch):self.prob self.st_prob …

Debezium vs OGG vs Tapdata:如何实时同步 Oracle 数据到 Kafka 消息队列?

随着信息时代的蓬勃发展&#xff0c;企业对实时数据处理的需求逐渐成为推动业务创新和发展的重要驱动力。在这个快速变化的环境中&#xff0c;许多企业选择将 Oracle 数据库同步到 Kafka&#xff0c;以满足日益增长的实时数据处理需求。本文将深入探讨这一趋势的背后原因&#…

Java并发基石ReentrantLock:深入解读其原理与实现

码到三十五 &#xff1a; 个人主页 心中有诗画&#xff0c;指尖舞代码&#xff0c;目光览世界&#xff0c;步履越千山&#xff0c;人间尽值得 ! 在Java的并发编程库中&#xff0c;ReentrantLock是一种非常重要的同步工具&#xff0c;它提供了一种比内置synchronized关键字更加…

基于ArcGIS等多技术融合提升环境、生态、水文、土地、农业、大气等领域科研技术应用

基于ArcGIS等多技术融合提升环境、生态、水文、土地、农业、大气等领域科研技术应用 原文链接https://mp.weixin.qq.com/s?__bizMzUyNzczMTI4Mg&mid2247667012&idx5&snd2c5af65851b06ff7ee14a744c16009e&chksmfa771279cd009b6f8beff1c61c6b3b73087bf93e7d440…

顺序表的动态分配基本操作

#include <stdio.h> #include <stdlib.h>// 顺序表存储空间动态分配 #define InitSize 10 // 顺序表初始长度 typedef int ElemType; // int类型重命名为ElemType&#xff0c;方便后续调整typedef struct { // 定义结构体ElemType *data; // 用静…

“垃圾不落地,捡跑来助力”学雷锋志愿服务暨党支部党日活动

指导思想 紧紧围绕建设和谐社会主题&#xff0c;以创建文明为契机&#xff0c;学习雷锋精神&#xff0c;为人民服务为宗旨&#xff0c;大力开展志愿捡跑活动&#xff0c;激发大家积极参与志愿活动的热情&#xff0c;大力弘扬奉献、友爱、互助、进步的志愿服务精神。 活动启动 …

维度建模理论之事实表

事实表概述 事实表作为数据仓库维度建模的核心&#xff0c;紧紧围绕着业务过程来设计。其包含与该业务过程有关的维度引用&#xff08;维度表外键&#xff09;以及该业务过程的度量&#xff08;通常是可累加的数字类型字段&#xff09;。 事实表特点 事实表通常比较“细长”…

N 皇后00

题目链接 N 皇后 题目描述 注意点 1 < n < 9 解答思路 首先想到的是使用深度优先遍历回溯找到所有的情况&#xff0c;基本思路是&#xff1a;逐行确定Q在该行的位置&#xff0c;且每一行Q都是从第0列到第n - 1列全部考虑&#xff0c;在确定Q在任意一行的某一列时&am…

Java集合Collection之LinkedList

LinkeList LinkedList&#xff08;双向链表&#xff09;是一种常见的线性数据结构&#xff0c;但是并不会按线性的顺序存储数据。它由一系列节点组成&#xff0c;每个节点包含数据部分和一个指向下一个节点的引用。相比于数组&#xff0c;链表具有动态大小、插入和删除效率高的…

练习实践-TLS协议01-Wireshark对https数据的解密

参考来源&#xff1a; https://zhuanlan.zhihu.com/p/36669377 https://blog.csdn.net/u010726042/article/details/53408077 思路&#xff1a; wireshark抓到的https流量包经过了ssl加密&#xff0c;那么我们如何才能查看解密的数据呢&#xff1f;Firefox和Chrome浏览器都支…

Godot 学习笔记(2):信号深入讲解

文章目录 前言相关链接环境信号简单项目搭建默认的信号先在label里面预制接收函数添加信号 自定义无参数信号为了做区分&#xff0c;我们在label新增一个函数 自定义带参数信号Button代码label代码连接信号 自定义复杂参数信号自定义GodotObject类ButtonLabel连接信号 父传子Ca…

国内超好用且免费的 AI 写作工具有哪些?

目前&#xff0c;市面上这类AI工具实在是太多了&#xff0c;比如依托于清华大学开发的智谱清言&#xff0c;或亦是百度的文心一言&#xff0c;还是阿里云的通义千问&#xff0c;这些AI工具在功能是类似的&#xff0c;但是依托于大模型的不同&#xff0c;可能回答的结果迥然不同…

基于springboot+vue的在线互动学习网站

博主主页&#xff1a;猫头鹰源码 博主简介&#xff1a;Java领域优质创作者、CSDN博客专家、阿里云专家博主、公司架构师、全网粉丝5万、专注Java技术领域和毕业设计项目实战&#xff0c;欢迎高校老师\讲师\同行交流合作 ​主要内容&#xff1a;毕业设计(Javaweb项目|小程序|Pyt…