当前位置: 首页 > article >正文

Vue:Ajax

AJAX 允许我们在不刷新页面的情况下与服务器交互,实现:动态加载数据,提交表单信息,实时更新内容,与后端 API 通信。通常使用专门的 HTTP 客户端库来处理 AJAX 请求。

npm install axios
import axios from 'axios';export default {data() {return {users: []};},async mounted() {try {const response = await axios.get('https://api.example.com/users');this.users = response.data;} catch (error) {console.error('获取用户数据失败:', error);}}
};

创建 Axios 实例

// src/utils/request.js
import axios from 'axios';const api = axios.create({baseURL: 'https://api.example.com',timeout: 5000,headers: {'Content-Type': 'application/json'}
});// 请求拦截器
api.interceptors.request.use(config => {const token = localStorage.getItem('token');if (token) {config.headers.Authorization = `Bearer ${token}`;}return config;
});// 响应拦截器
api.interceptors.response.use(response => response.data,error => {if (error.response.status === 401) {// 处理未授权}return Promise.reject(error);}
);export default api;

AJAX 请求的最佳实践

1在合适的生命周期钩子中发起请求

created/mounted:组件初始化时获取数据
watch:监听路由或参数变化时重新获取数据

watch: {'$route.params.id': {handler(newId) {this.fetchData(newId);},immediate: true // 立即执行一次}
}

2处理加载状态

data() {return {isLoading: false,data: null,error: null};
},
methods: {async fetchData() {this.isLoading = true;this.error = null;try {this.data = await api.get('/data');} catch (err) {this.error = err.message;} finally {this.isLoading = false;}}
}

避免内存泄漏

在组件销毁前取消未完成的请求:

import axios from 'axios';export default {data() {return {cancelToken: axios.CancelToken.source()};},methods: {fetchData() {axios.get('/data', {cancelToken: this.cancelToken.token});}},beforeUnmount() {this.cancelToken.cancel('组件卸载,取消请求');}
};

http://www.lryc.cn/news/2404590.html

相关文章:

  • 法律大语言模型(Legal LLM)技术架构
  • 理解 RAG_HYBRID_BM25_WEIGHT:打造更智能的混合检索增强生成系统
  • Hive终极性能优化指南:从原理到实战
  • 第六十二节:深度学习-加载 TensorFlow/PyTorch/Caffe 模型
  • MobaXterm配置跳转登录堡垒机
  • 零基础在实践中学习网络安全-皮卡丘靶场(第八期-Unsafe Filedownload模块)
  • 测试 FreeSWITCH 的 mod_loopback
  • 【C++快读快写】
  • 测试(面经 八股)
  • [面试精选] 0104. 二叉树的最大深度
  • 图上合成:用于大型语言模型持续预训练的知识合成数据生成
  • MYSQL(二) ---MySQL 8.4 新特性与变量变更
  • 数学复习笔记 27
  • 现代简约壁炉:藏在极简线条里的温暖魔法
  • 限流算法java实现
  • 机器学习×第二卷:概念下篇——她不再只是模仿,而是开始决定怎么靠近你
  • Linux 下关于 ioremap 系列接口
  • 常用函数库之 - std::function
  • php执行系统命令的四个常用函数
  • 力扣-17.电话号码的字母组合
  • 基于SpringBoot解决RabbitMQ消息丢失问题
  • 免费插件集-illustrator插件-Ai插件-随机填色
  • 使用 Unstructured 开源库快速入门指南
  • 白银6月想法
  • OpenCV 滑动条调整图像对比度和亮度
  • 船舶事故海上搜救VR情景演练全场景 “复刻”,沉浸式救援体验​
  • 使用Caddy在Ubuntu 22.04上配置HTTPS反向代理
  • 无人机目标检测与语义分割数据集(猫脸码客)
  • Web设计之登录网页源码分享,PHP数据库连接,可一键运行!
  • Cursor + Claude 4:微信小程序流量主变现开发实战案例