Ajax的定义

Ajax(Asynchronous JavaScript and XML)是一种用于创建异步 Web 应用的技术,允许网页在不重新加载整个页面的情况下与服务器交换数据并更新部分内容。

Ajax的核心特点

异步通信:通过后台与服务器交互,用户操作不受干扰。

局部刷新:仅更新页面特定部分,提升用户体验。

技术组合:依赖 JavaScript、XML(或 JSON)、HTML/CSS 和 XMLHttpRequest 对象。                                                                                                                                                     

异步交互:可以在不重新加载整个页面的情况下,与服务器交换数据并更新部分网页的技术。

如上图,输入文字,浏览器根据文字给出对应的推荐内容,这就是一种异步交互。

同步请求的过程如下图

异步请求的过程如下图

Axios

使用原生的Ajax请求的代码编写起来还是比较繁琐的,所以接下来我们学习一门更加简单的发送Ajax请求的技术Axios 。Axios是对原生的AJAX进行封装,简化书写。Axios官网是:https://www.axios-http.cn

一、引入Axios

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

也可以下载一个axios的js文件放在目录中引用

入门程序

点击按钮时,使用Axios发送请求

<!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>
</head>
<body><input type="button" value="获取数据GET" id="btnGet"><input type="button" value="操作数据POST" id="btnPost"><script src="js/axios.js"></script><script>//发送GET请求document.querySelector('#btnGet').addEventListener('click', () => {//axios发起异步请求axios({url:'https://mock.apifox.cn/m1/3083103-0-default/emps/list',method:'GET'}).then((result)=>{console.log(result.data);//成功回调函数}).catch((error)=>{console.log(error);//失败回调函数`})})//发送POST请求document.querySelector('#btnPost').addEventListener('click', () => {axios({url:'https://mock.apifox.cn/m1/3083103-0-default/emps/update',method:'POST'}).then((result)=>{console.log(result.data);//成功回调函数}).catch((error)=>{console.log(error);//失败回调函数`})})</script>
</body>
</html>

以下有个小程序可以凸显出axios的异步请求的特点

<!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>
</head>
<body><input type="button" value="获取数据GET" id="btnGet"><input type="button" value="操作数据POST" id="btnPost"><script src="js/axios.js"></script><script>//发送GET请求document.querySelector('#btnGet').addEventListener('click', () => {axios.get('https://mock.apifox.cn/m1/3083103-0-default/emps/list').then((result) => {console.log(result.data);})//异步输出(异步请求,此处不需要等待服务器,因此更快)console.log('异步输出');})//发送POST请求document.querySelector('#btnPost').addEventListener('click', () => {axios.post('https://mock.apifox.cn/m1/3083103-0-default/emps/update',id='1').then((result) => {console.log(result.data);}).catch((err) => {});})</script>
</body>
</html>

当按下获取数据GET按钮时,axios的get方法启用,然后程序继续往下走,往控制栏里输出‘异步输出’,然后get方法获取到服务器端的数据,输出对应数据。

Vue的生命周期

vue的生命周期:指的是vue对象从创建到销毁的过程。

vue的生命周期包含8个阶段:每触发一个生命周期事件,会自动执行一个生命周期方法,这些生命周期方法也被称为钩子方法。其完整的生命周期如下图所示:

状态阶段周期
beforeCreate创建前
created创建后
beforeMount挂载前
mounted挂载完成
beforeUpdate更新前
updated更新后
beforeDestroy销毁前
destroyed

销毁后

其中我们需要重点关注的是mounted,其他的我们了解即可。

mounted:挂载完成,Vue初始化成功,HTML页面渲染成功。以后我们一般用于页面初始化自动的ajax请求后台数据

案例

<!DOCTYPE html>
<html lang="zh-CN">
<head><meta charset="UTF-8"><title>Tlias智能学习辅助系统</title><style>/* 导航栏样式 */.navbar {background-color: #b5b3b3; /* 灰色背景 */display: flex; /* flex弹性布局 */justify-content: space-between; /* 左右对齐 */padding: 10px; /* 内边距 */align-items: center; /* 垂直居中 */}.navbar h1 {margin: 0; /* 移除默认的上下外边距 */font-weight: bold; /* 加粗 */color: white;/* 设置字体为楷体 */font-family: "楷体";}.navbar a {color: white; /* 链接颜色为白色 */text-decoration: none; /* 移除下划线 */}/* 搜索表单样式 */.search-form {display: flex;flex-wrap: nowrap;align-items: center;gap: 10px; /* 控件之间的间距 */margin: 20px 0;}.search-form input[type="text"], .search-form select {padding: 5px; /* 输入框内边距 */width: 260px; /* 宽度 */}.search-form button {padding: 5px 15px; /* 按钮内边距 */}/* 表格样式 */table {width: 100%;border-collapse: collapse;}th, td {border: 1px solid #ddd; /* 边框 */padding: 8px; /* 单元格内边距 */text-align: center; /* 左对齐 */}th {background-color: #f2f2f2;font-weight: bold;}.avatar {width: 30px;height: 30px;}/* 页脚样式 */.footer {background-color: #b5b3b3; /* 灰色背景 */color: white; /* 白色文字 */text-align: center; /* 居中文本 */padding: 10px 0; /* 上下内边距 */margin-top: 30px;}#container {width: 80%; /* 宽度为80% */margin: 0 auto; /* 水平居中 */}</style>
</head>
<body><div id="container"><!-- 顶部导航栏 --><div class="navbar"><h1>Tlias智能学习辅助系统</h1><a href="#">退出登录</a></div><!-- 搜索表单区域 --><form class="search-form" action="/search" method="post"><label for="name">姓名:</label><input type="text" id="name" name="name" v-model="searchForm.name" placeholder="请输入姓名"><label for="gender">性别:</label><select id="gender" name="gender" v-model="searchForm.gender"><option value=""></option><option value="1">男</option><option value="2">女</option></select><label for="position">职位:</label><select id="position" name="position" v-model="searchForm.job"><option value=""></option><option value="1">班主任</option><option value="2">讲师</option><option value="3">学工主管</option><option value="4">教研主管</option><option value="5">咨询师</option></select><button type="button" v-on:click="search">查询</button><button type="button" @click="clear">清空</button></form><!-- 表格展示区 --><table><!-- 表头 --><thead><tr><th>序号</th><th>姓名</th><th>性别</th><th>头像</th><th>职位</th><th>入职日期</th><th>最后操作时间</th><th>操作</th></tr></thead><!-- 表格主体内容 --><tbody><tr v-for="(item, index) in empList" :key="item.id"><td>{{index+1}}</td><td>{{item.name}}</td><td>{{item.gender == 1 ?'男':'女'}}</td><!-- 插值表达式不能出现在标签内部,只能出现在标签属性中 --><td><img class="avatar" v-bind:src="item.image" :alt="item.name"></td><td><span v-if="item.job==1">班主任</span><span v-else-if="item.job==2">讲师</span><span v-else-if="item.job==3">学工主管</span><span v-else-if="item.job==4">教研主管</span><span v-else-if="item.job==5">咨询师</span><span v-else>其他</span></td><!-- <td><span v-show="item.job==1">班主任</span><span v-show="item.job==2">讲师</span><span v-show="item.job==3">学工主管</span><span v-show="item.job==4">教研主管</span><span v-show="item.job==5">咨询师</span></td> --><td>{{item.entrydate}}</td><td>{{item.updatetime}}</td><td class="action-buttons"><button type="button">编辑</button><button type="button">删除</button></td></tr></tbody></table><!-- 页脚版权区域 --><footer class="footer"><p>江苏传智播客教育科技股份有限公司</p><p>版权所有 Copyright 2006-2024 All Rights Reserved</p></footer></div><script src="js/axios.js"></script><script type="module">import { createApp } from 'https://unpkg.com/vue@3/dist/vue.esm-browser.js'createApp({data() {return {searchForm:{//封装用户输入的查询条件name:'',gender:'',job:''},empList:[]}},//定义方法methods: {async search(){//发送ajax请求获取数据// axios.get(`https://web-server.itheima.net/emps/list?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`).then((result) => {//     this.empList = result.data.data;// })// console.log('===========================');let result = await axios.get(`https://web-server.itheima.net/emps/list?name=${this.searchForm.name}&gender=${this.searchForm.gender}&job=${this.searchForm.job}`);this.empList = result.data.data;},clear(){this.searchForm={name:'',gender:'',job:''};this.search(); }},//钩子函数mounted() {//页面加载完成后,发送ajax请求获取数据this.search();},}).mount('#container')</script></body>
</html>

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

11.OpenCV—联合QT环境配置

1.QT环境变量配置 在Qt中配置OpenCV 3.4.6与Visual Studio 2017的步骤如下&#xff1a; 一、前期准备 安装组件验证 确认已安装Qt的MSVC2017版本&#xff08;如Qt 5.12 MSVC2017 64-bit&#xff09; 检查Visual Studio 2017的MSVC编译器是否正常工作 OpenCV库准备 从官网…

2025虚幻引擎一般用什么模型格式

2025虚幻引擎一般用什么模型格式 前言 积累了一些人物模型发现有的有骨骼&#xff0c;有的没骨骼&#xff0c;有的要转换格式&#xff0c;有的直接可以用&#xff0c;所以了解一下各种模型。 2025虚幻人物模型积累 格式转换真麻烦。 2025.uexp、.uasset文件、.ubulk如何打…

电脑在使用过程中频繁死机怎么办

正兴致勃勃地打游戏&#xff0c;或者赶着完成一份重要的工作文档&#xff0c;电脑突然死机了&#xff0c;鼠标动不了&#xff0c;键盘也没反应&#xff0c;只能干瞪眼干着急。电脑在使用过程中频繁死机&#xff0c;真的太影响心情和效率了。今天咱就来好好聊聊&#xff0c;遇到…

【Java_EE】设计模式

设计模式&#xff1a;解决一些固定场景的固定套路&#xff0c;是一种代码风格的知道指南。设计模式不止23种 1、单例设计模式 单例设计模式&#xff1a;确保一个类只有一个实例&#xff0c;提供全局访问点 单例模式的实现方式&#xff1a; 1&#xff1a;饿汉模式 /*** 饿汉…

Nginx代理缓存静态资源

问题描述 有两台服务器&#xff0c;一台是外网的网关服务器&#xff0c;一台是内网的资源服务器&#xff0c;但是两台服务器距离很远&#xff08;跨省&#xff09;&#xff0c;页面中依赖大量插件资源&#xff0c;加载耗时久&#xff0c;本章重点讲解Nginx代理缓存静态资源。 …

Blender 转换为 STP:软件操作与迪威模型网在线转换全指南

在三维设计与工程制造领域&#xff0c;不同格式的文件承担着各自的使命。Blender 作为一款功能强大且开源的三维建模软件&#xff0c;被众多设计师、艺术家以及学生广泛使用&#xff0c;能够创作出风格多样、细节丰富的三维模型。而 STP 格式作为制造业通用的数据交换标准&…

WebFuture:PDF页面去掉下载按钮

问题描述&#xff1a;客户要求pdf页面不显示下载按钮 解决办法&#xff1a;WF15.2版本开始会在内容管理配置增加“允许下载 PDF“开关&#xff1b;之前的版本需要替换文件来处理 1.备份网站下的base文件夹&#xff0c;路径为/wwwroot/content/_common/base/&#xff0c;然后覆…

【JVM】- 类加载与字节码结构2

编译期处理&#xff08;语法糖&#xff09; java编译器把.java源码编译成.class字节码的过程&#xff0c;自动生成和转换的一些代码。 默认构造器 public class Candy01 { }编译成class后的代码 public class Candy1 {public Candy1(){super();} }自动拆装箱&#xff08;jd…

WSL2 中安装 cuDNN​​ 的完整指南

以下是关于 ​​cuDNN​​ 的详细介绍及在 ​​WSL2 中安装 cuDNN​​ 的完整指南&#xff0c;结合权威资料整理而成&#xff1a; &#x1f4da; ​​一、cuDNN 深度解析​​ ​​1. 定义与作用​​ ​​cuDNN​​&#xff08;CUDA Deep Neural Network Library&#xff09;是…

Apache Doris FE 问题排查与故障分析全景指南

前言&#xff1a; FE&#xff08;Frontend&#xff09;是 Apache Doris 集群架构中的“大脑”&#xff0c;负责元数据管理、查询解析和调度等关键任务。一旦 FE 出现问题&#xff0c;整个集群的稳定性和可用性将受到严重影响。因此&#xff0c;掌握 FE 故障定位与排查方法对于保…

RK AndroidFramework 内置应用可,卸载,恢复出厂设置恢复安装

device/rockchip/rk356x/rk3568_r/preinstall_del/Android.mkdevice/rockchip/rk356x/rk3568_r/preinstall_del/Android.mk include $(call all-subdir-makefiles) 拿内置LoyversePos应用做例子 device/rockchip/rk356x/rk3568_r/preinstall_del/preinstall.mk PRODUCT_PACK…

一文了解Blob文件格式,前端必备技能之一

文章目录 前言一、什么是Blob&#xff1f;二、Blob的基本特性三、Blob的构造函数四、常见使用场景1. 文件下载2. 图片预览3. 大文件分片上传 四、Blob与其他API的关系1. File API2. FileReader3. URL.createObjectURL()4. Response 五、性能与内存管理六、实际案例&#xff1a;…

LLMs 系列实操科普(4)

六、deep research 这是 chatgpt 推出的功能&#xff0c;但我这里是免费用户&#xff0c;一个月才有 5 次使用机会&#xff0c;而且使用的是轻量化模型版本&#xff0c;相对体验上比较鸡肋一些。 那这个深度思考研究是个什么东西呢&#xff1f; 根据 openai 对其的解释是&…

若依框架前端调用后台服务报跨域错误

背景&#xff1a;使用若依框架的前后端分离项目&#xff0c;前后端开发在同一个办公室情况下前端调用后端服务提示如下报错&#xff1a;Access to XMLHttpRequest at http://ip1:8089/online/layer/dataType from origin http://ip2:6090 has been blocked by CORS policy: Res…

PHP商城源码:构建高效电商平台的利器

一、PHP商城源码的核心优势 1. **开源免费&#xff0c;降低成本** PHP作为开源语言&#xff0c;拥有庞大的开发者社区&#xff0c;成熟的商城源码&#xff08;如EcShop、OpenCart&#xff09;可免费获取&#xff0c;大幅降低企业的技术投入成本。 2. **开发效率高** PHP语法…

【学习笔记】C++代码规范整理

【学习笔记】C代码规范整理 一、匿名空间namespace 匿名命名空间&#xff08;Anonymous Namespace&#xff09;是一种特殊的命名空间声明方式&#xff0c;其作用是将声明的成员限定在当前编译单元&#xff08;源文件&#xff09;内可见&#xff0c;类似于使用 static 关键字修…

数学复习笔记 29 不定积分

前言 复习的时候时常复习一下以前复习的高数&#xff0c;温故而知新&#xff0c;可以为师矣。现实生活中有非常多让我难受的事情&#xff0c;贤者模式的时候也会对一些自己的行为嗤之以鼻&#xff0c;复习考研对其他三门科目都没有学出来正反馈&#xff0c;只能从数学这儿找一…

微软因安全漏洞禁用黑暗环境下的Windows Hello面部识别功能

面部识别技术在各种场景中的应用日益广泛&#xff0c;但身份欺诈事件仍时有发生&#xff0c;这表明即使面部识别也并非万无一失。在某些情况下&#xff0c;这些系统可能被攻击者利用。 漏洞发现与应对措施 近期&#xff0c;微软在Windows 10和11系统中禁用了黑暗环境下使用Wi…

产品经理课程(十五)实战点评(3)

&#xff08;一&#xff09;复习 需求文档是产品的说明书 需求文档包含&#xff1a;修订记录、背景、主要流程、详细功能逻辑、数据上报&#xff0c;发布策略 bug也是需求文档的一部分 &#xff08;二&#xff09;案例讲解 案例一&#xff1a; 一个版本里面的4-5个功能点就比…

大模型量化与剪枝

大模型量化&#xff0c;剪枝 量化有助于减少显存使用并加速推理 GPTQ 等后训练量化方法(Post Training Quantization)是一种在训练后对预训练模型进行量化的方法。 ### model model_name_or_path: meta-llama/Meta-Llama-3-8B-Instruct template: llama3### export export_di…