vue axios 在页面切换时中断请求方法 ajax


Posted in Javascript onMarch 05, 2018

如下所示:

Vue.prototype.$ajax=axios; 
const CancelToken = axios.CancelToken;
let cancel;
let cancelAjaxText = '中断成功';
Vue.prototype.post = function(url,data,loading){
 	var ajax = Vue.prototype.$ajax({
	   	method: 'post',
	   	url:url,
	   	data: data,
	   	cancelToken: new CancelToken(c => { //强行中断请求要用到的
	   	cancel = c
	   	})
	  }).then(res =>res.data,res=>{ //中断请求和请求出错都会走这里,我这里用 cancelAjaxText 来区别
	  	if(res.message == cancelAjaxText){ 
	  		return {status : false,msg:cancelAjaxText}
	  	}else{
	  		this.$confirm('登录过时,是否重新登录', '提示', {
			   	confirmButtonText: '确定',
			   	cancelButtonText: '取消',
			   	type: 'warning'
			  }).then(() => {
			   	window.location.href = Vue.prototype.url_head + '/';
			  }).catch(() => {
			   	  
			  });
	  	}
		 		 	
			})
 	return ajax;
};

接入 axios ,在POST方法里加入 cancelToken 数据,在上面else中,中断请求和请求出错都会走那里,所以用一个msg来识别(因为接口返回中也有一个msg,统一一下);

以下是 中断请求的方法,放在 路由切换的监听 router.beforeEach 中 ,cancel 是中断的方法,在post 的 cancelToken 里面拿出来的

Vue.prototype.cancelAjax = function(){ //切换页面强行中断请求 router.beforeEach中用到 
 if(cancel){ 
  cancel(cancelAjaxText); 
 } 
}
router.beforeEach((to, from, next) => { 
<span style="white-space:pre;"> </span>Vue.prototype.cancelAjax()  
 next(); 
});

调用post

<span style="white-space:pre;">   </span>this.post(this.ajaxUrl + 'getCrTree',{ 
    devAddr : this.changeData.devAddr, 
    innerId : this.changeData.innerId, 
   }).then(ret=>{ 
    if(ret.status){ 
      
    }else{ 
     this.msg(ret.msg); 
    } 
   })

以上这篇vue axios 在页面切换时中断请求方法 ajax就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript实例教程(19) 使用HoTMetal(5)
Dec 23 Javascript
js 操作css实现代码
Jun 11 Javascript
初试jQuery EasyUI 使用介绍
Apr 01 Javascript
jQuery UI Dialog控件中的表单无法正常提交的解决方法
Dec 19 Javascript
关于JavaScript中的关联数组分析
Apr 09 Javascript
自定义ExtJS控件之下拉树和下拉表格附源码
Oct 15 Javascript
快速使用Bootstrap搭建传送带
May 06 Javascript
微信小程序 wxapp内容组件 text详细介绍
Oct 31 Javascript
vue组件父与子通信详解(一)
Nov 07 Javascript
微信小程序收藏功能的实现代码
Jun 12 Javascript
vue实现分页栏效果
Jun 28 Javascript
JavaScript函数柯里化实现原理及过程
Dec 02 Javascript
node.js通过axios实现网络请求的方法
Mar 05 #Javascript
axios发送post请求springMVC接收不到参数的解决方法
Mar 05 #Javascript
基于vue 添加axios组件,解决post传参数为null的问题
Mar 05 #Javascript
解决vue处理axios post请求传参的问题
Mar 05 #Javascript
解决vue2中使用axios http请求出现的问题
Mar 05 #Javascript
在vue项目中引入highcharts图表的方法(详解)
Mar 05 #Javascript
Angular @HostBinding()和@HostListener()用法
Mar 05 #Javascript
You might like
php实现mysql数据库备份类
2008/03/20 PHP
PHP设计模式(七)组合模式Composite实例详解【结构型】
2020/05/02 PHP
关于JavaScript的gzip静态压缩方法
2007/01/05 Javascript
jquery dialog键盘事件代码
2010/08/01 Javascript
Textbox控件注册回车事件及触发按钮提交事件具体实现
2013/03/04 Javascript
js switch case default 的用法示例介绍
2013/10/23 Javascript
node.js中的socket.io的广播消息
2014/12/15 Javascript
javascript获取网页宽高方法汇总
2015/07/19 Javascript
前端js实现文件的断点续传 后端PHP文件接收
2016/10/14 Javascript
Vue2 Vue-cli中使用Typescript的配置详解
2017/07/24 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
Echarts之悬浮框中的数据排序问题
2018/11/08 Javascript
layui表格数据重载
2019/07/27 Javascript
layui扩展上传组件模拟进度条的方法
2019/09/23 Javascript
如何在vue中使用HTML 5 拖放API
2021/01/14 Vue.js
[07:57]DOTA2热力大趴狂欢夜 广州站活动回顾
2013/11/27 DOTA
[44:15]DOTA2上海特级锦标赛主赛事日 - 5 败者组决赛Liquid VS EG第二局
2016/03/06 DOTA
在Heroku云平台上部署Python的Django框架的教程
2015/04/20 Python
Python交互环境下实现输入代码
2018/06/22 Python
对python指数、幂数拟合curve_fit详解
2018/12/29 Python
Python实现微信中找回好友、群聊用户撤回的消息功能示例
2019/08/23 Python
python 实现多维数组(array)排序
2020/02/28 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
python如何运行js语句
2020/09/09 Python
python raise的基本使用
2020/09/10 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
一款纯css3实现的响应式导航
2014/10/31 HTML / CSS
5个你不知道的HTML5的接口介绍
2013/08/07 HTML / CSS
HTML5 canvas绘制的玫瑰花效果
2014/05/29 HTML / CSS
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
个人简历自我鉴定
2013/10/11 职场文书
办理生育手续介绍信
2014/01/14 职场文书
前处理组长岗位职责
2014/03/01 职场文书
大学开学典礼新闻稿
2015/07/17 职场文书
2015年四年级班主任工作总结
2015/10/22 职场文书
运动会主持人开幕词
2016/03/04 职场文书