问题:如图,当我连续点击提交按钮多次,后台会接收到多次数据。

image.png

在网上找了下方法,结合自己实际的问题,解决如下(参考文章:https://www.jianshu.com/p/4445595488e2)

let pending = []; //声明一个数组用于存储每个ajax请求的取消函数和ajax标识

let cancelToken = axios.CancelToken;//初始化取消请求的构造函数

let arr=[]//区分是请求还是响应的头部

let removePending = (config,f) => {

arr=config.url.split(window.g.apiUrl);

arr=arr[arr.length-1]

let flagUrl = arr + '&' + config.method

if(pending.indexOf(flagUrl)!==-1){

if(f){

f()

}else{

pending.splice(pending.indexOf(flagUrl), 1)

}

}else{

if(f){

pending.push(flagUrl)

}

}

}

//添加请求拦截器

axios.interceptors.request.use(config=>{

if(config.method==='post'){

config.cancelToken = new cancelToken((c)=>{

removePending(config,c);

});

}

return config;

},error => {

return Promise.reject(error);

});

axios.interceptors.response.use(response=> {

if (response.config.method === 'post') {

removePending(response.config)

}

})

注释:1、文章说的很清楚,但是有一个问题,就是我的config.url的路径在request和response里面不一样,我用到了baseUrl,所以用了一个arr来处理了config.url。

2、做完了之后你还需要配合自己的代码做一定的处理,如果在响应完成,还在点击(因为这个响应处理时间很快),就会触发一个新的请求。

vue ajax提交防止伪造,axios+vue防止点击提交按钮而发送多次请求相关推荐

  1. [vue] ajax、fetch、axios这三都有什么区别?

    [vue] ajax.fetch.axios这三都有什么区别? ajax, 实际上就是xmlHttpRequest, 旧瓶装新酒的一种新应用的称呼 fetch是新出的规范, 具体实现原理不太清楚, 但 ...

  2. html中点击提交按钮显示提交i成功,百里香叶:点击提交按钮后显示成功信息

    我有一个spring-boot申请,Thymeleaf.我有非常基本的情况.有一个表单,当用户点击提交按钮时,表单数据应发送到控制器,但在同一页面中应显示成功消息.百里香叶:点击提交按钮后显示成功信息 ...

  3. Vue学习笔记(二)—— vue项目中使用axios

    一.文档链接 axios文档 vue开发插件 二.axios 简介 axios 是一个基于Promise 用于浏览器和 nodejs 的 HTTP 客户端,它本身具有以下特征: 从浏览器中创建 XML ...

  4. ajax同步请求后再次发送上一个请求

    场景:实现一个发送注册社团申请的功能. 实现流程:点击"注册"按钮,发送一个请求,请求路径经过解析后,由控制器里的指定的方法处理,跳转到注册页面:完成信息的编辑后,点击" ...

  5. jquery+bootstrap实现tab切换, 每次切换时都请求数据, 点击提交分别向不同的地址提交数据...

    今天一个朋友叫帮做一个tab切换, 每一个tab内容区域都是从后台取出的数据, 这些数据要用表格的形式显示处理, 并且表格的内容区域可以修改, 如下所示: 例子查看请演示查看. 截图如图所示: 实现步 ...

  6. bootstrap tabale 点击_jquery+bootstrap实现tab切换, 每次切换时都请求数据, 点击提交分别向不同的地址提交数据...

    今天一个朋友叫帮做一个tab切换, 每一个tab内容区域都是从后台取出的数据, 这些数据要用表格的形式显示处理, 并且表格的内容区域可以修改, 如下所示: 例子查看请演示查看. 截图如图所示: 实现步 ...

  7. Vue项目首页_使用axios发送ajax请求

    安装axios:  npm install axios --save 在Home.vue中发送一个ajax请求,然后把数据传递给子组件. 在Home.vue中: import axios from ' ...

  8. Vue为何弃用经典的Ajax,选择新技术Axios?

    目录 一.选择什么网络模块? 二.axios功能特点 三.axios支持多种请求方式 四.发送并发请求 五.全局配置 六.创建axios实例 七.常见的配置选项 八.axios的封装 九.封装一个re ...

  9. Vue的axios与ajax的区别:axios是对ajax的封装

    分析 axios是通过promise实现对ajax技术的一种封装,就像jQuery实现ajax封装一样. ajax技术实现了网页的局部数据刷新,axios实现了对ajax的封装. axios是ajax ...

最新文章

  1. sql server 2008数据导入Oracle方法
  2. anaconda新建不同python版本环境_解决 Anaconda 与 ROS 冲突(python 版本与 opencv)
  3. 人工智能、机器学习、深度学习和神经网络的区别
  4. ts定义数组类型_ts基本数据类型
  5. CF1270H Number of Components(线段树)
  6. 可以让你少奋斗十年的工作经验
  7. 在拦截器里放入参数 controller_干货|SpringMVC拦截器的使用详解
  8. django迁移数据库错误
  9. Android虚拟机Dalvik介绍
  10. 中级电工技术实训考核装置
  11. matlab隐函数参数拟合,matlab拟合隐函数参数(1stOpt拟合7参数请求代跑)
  12. Ubuntu、CentOS、macOS测试服务器上传和下载速度
  13. [总结]视音频编解码技术零基础学习方法
  14. Keil5 平台 S3C2440裸机程序开发-----中断系统/UART
  15. 我的远程实习笔记day1
  16. 2048小游戏js实现
  17. 如何读取PLC的寄存器地址和点表?
  18. JVM中的新生代和老年代(Eden空间、两个Survior空间)
  19. MySqlException(0x80004005) 报错
  20. [FPGA系列] 扩展知识 --- QPSK调制解调器

热门文章

  1. 04使用模板显示内容
  2. 11JavaScript中的对象
  3. 嵌入式python 图形界面_有哪些好的嵌入式操作系统界面库(GUI library)?
  4. 实操教程:android camera nanodet 实时物体检测的高效实现总结
  5. 三维模型特征提取方法概述
  6. 好消息:Sci-Hub解封了!可以看2021新文献了!附可用网址
  7. java2019 数据结构算法面试题_GitHub - sjyw/java-interview: 史上最全Java面试题汇总与解析(505道):2019最新版...
  8. Nat. Rev. Neurol. | 机器学习在神经退行性疾病诊断和治疗中的应用
  9. NAACL | 通过对抗性修改,探究链接预测的鲁棒性和可解释性
  10. Nature Methods | TooManyCells:单细胞聚类和可视化方法