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 相关文章推荐
jquery BS,dialog控件自适应大小
Jul 06 Javascript
ExtJS 工具栏 分页事件参数
Mar 05 Javascript
用Jquery实现多级下拉框无刷新的联动
Dec 22 Javascript
简单几行JS Code实现IE邮件转发新浪微博
Jul 03 Javascript
js中的caller和callee属性介绍和例子
Jun 07 Javascript
Node.js文件操作详解
Aug 16 Javascript
javascript操作Cookie(设置、读取、删除)方法详解
Mar 18 Javascript
浅谈Node.js:Buffer模块
Dec 05 Javascript
使用JS 插件qrcode.js生成二维码功能
Feb 20 Javascript
vue2.0 datepicker使用方法
Feb 04 Javascript
详解小程序输入框闪烁及重影BUG解决方案
Aug 31 Javascript
微信小程序canvas分享海报功能
Oct 31 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设计模式 Adapter(适配器模式)
2011/06/26 PHP
php mb_substr()函数截取中文字符串应用示例
2014/07/29 PHP
php bootstrap实现简单登录
2016/03/08 PHP
PHP获取当前文件的父目录方法汇总
2016/07/21 PHP
php获取当前月与上个月月初及月末时间戳的方法
2016/12/05 PHP
PHP通过bypass disable functions执行系统命令的方法汇总
2018/05/02 PHP
php 比较获取两个数组相同和不同元素的例子(交集和差集)
2019/10/18 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
js 鼠标拖动对象 可让任何div实现拖动效果
2009/11/09 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
JavaScript设计模式之适配器模式介绍
2014/12/28 Javascript
JavaScript过滤字符串中的中文与空格方法汇总
2016/03/07 Javascript
jQueryUI中的datepicker使用方法详解
2016/05/25 Javascript
jQuery编写textarea输入字数限制代码
2017/03/23 jQuery
Bootstrap组件之下拉菜单,多级菜单及按钮布局方法实例
2017/05/25 Javascript
JointJS流程图的绘制方法
2018/12/03 Javascript
JS中的算法与数据结构之栈(Stack)实例详解
2019/08/20 Javascript
[02:39]DOTA2英雄基础教程 极限穿梭编织者
2013/12/05 DOTA
[00:05]ChinaJoy现场 DOTA2玩家高呼“CN DOTA BEST DOTA”
2019/08/04 DOTA
Python通过递归遍历出集合中所有元素的方法
2015/02/25 Python
15行Python代码带你轻松理解令牌桶算法
2018/03/21 Python
python中的字符串内部换行方法
2018/07/19 Python
Python产生Gnuplot绘图数据的方法
2018/11/09 Python
Python3自动生成MySQL数据字典的markdown文本的实现
2020/05/07 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
CSS3基础(RGBa、text-shadow、box-shadow、border-radius)
2012/11/13 HTML / CSS
为什么如下的代码int a=100,b=100;long int c=a * b;不能工作
2013/11/29 面试题
大学毕业生文采飞扬的自我鉴定
2013/12/03 职场文书
模范教师事迹材料
2014/02/10 职场文书
预备党员入党自我评价范文
2014/03/10 职场文书
工程催款通知书
2015/04/17 职场文书
与死神共舞观后感
2015/06/15 职场文书
爸爸的三轮车观后感
2015/06/16 职场文书
2016春节放假通知范文
2015/08/18 职场文书
企业法人任命书
2015/09/21 职场文书
css实现两栏布局,左侧固定宽,右侧自适应的多种方法
2021/08/07 HTML / CSS