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 获得绝对,相对位置的坐标方法
Feb 09 Javascript
HTML DOM的nodeType值介绍
Mar 31 Javascript
jQuery判断checkbox是否选中的3种方法
Aug 12 Javascript
javascript学习笔记(三)BOM和DOM详解
Sep 30 Javascript
JavaScript实现表格点击排序的方法
May 11 Javascript
javascript数据结构之串的概念与用法分析
Apr 12 Javascript
jQuery实现动态删除LI的方法
May 30 jQuery
JavaScript阻止表单提交方法(附代码)
Aug 15 Javascript
如何让你的JS代码更好看易读
Dec 01 Javascript
Vuex入门到上手教程
Jun 20 Javascript
JavaScript模块管理的简单实现方式详解
Jun 15 Javascript
JS如何实现在弹出窗口中加载页面
Dec 03 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入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
关于Zend Studio 配色方案插件的介绍
2013/06/24 PHP
解析在PHP中使用mysqli扩展库对mysql的操作
2013/07/03 PHP
ThinkPHP打开验证码页面显示乱码的解决方法
2014/12/18 PHP
PHP迭代器和迭代的实现与使用方法分析
2018/04/19 PHP
JavaScript中document.forms[0]与getElementByName区别
2015/01/21 Javascript
在JavaScript中使用开平方根的sqrt()方法
2015/06/15 Javascript
jQuery简单实现验证邮箱格式
2015/07/15 Javascript
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
jQuery与Ajax以及序列化
2016/02/01 Javascript
浅析JavaScript中的array数组类型系统
2016/07/18 Javascript
Vuejs第十二篇之动态组件全面解析
2016/09/09 Javascript
谈谈JavaScript中浏览器兼容问题的写法小议
2016/12/17 Javascript
jQuery中DOM节点删除之empty与remove
2017/01/20 Javascript
jQuery+C#实现参数RSA加密传输功能【附jsencrypt.js下载】
2017/06/26 jQuery
Vue计算属性的使用
2017/08/04 Javascript
在Vue中使用this.$store或者是$route一直报错的解决
2019/11/08 Javascript
three.js中多线程的使用及性能测试详解
2021/01/07 Javascript
python求crc32值的方法
2014/10/05 Python
Python中的匿名函数使用简介
2015/04/27 Python
整理Python中的赋值运算符
2015/05/13 Python
Python第三方库的安装方法总结
2016/06/06 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
Numpy中矩阵matrix读取一列的方法及数组和矩阵的相互转换实例
2018/07/02 Python
使用pip发布Python程序的方法步骤
2018/10/11 Python
Django组件之cookie与session的使用方法
2019/01/10 Python
numpy求平均值的维度设定的例子
2019/08/24 Python
Python获取一个用户名的组ID过程解析
2019/09/03 Python
numpy.transpose()实现数组的转置例子
2019/12/02 Python
JPA的特点
2014/10/25 面试题
Java如何调用外部Exe程序
2015/07/04 面试题
委托书如何写
2014/08/30 职场文书
法人授权委托书公证范本
2014/09/14 职场文书
手机销售员岗位职责
2015/04/11 职场文书
工商局调档介绍信
2015/10/22 职场文书
python3+PyQt5+Qt Designer实现界面可视化
2021/06/10 Python