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 相关文章推荐
js实现Select下拉框具有输入功能的方法
Feb 06 Javascript
百度地图API之本地搜索与范围搜索
Jul 30 Javascript
jQuery+css实现炫目的动态块漂移效果
Jan 28 Javascript
Bootstrap Metronic完全响应式管理模板学习笔记
Jul 08 Javascript
Angular 路由route实例代码
Jul 12 Javascript
Bootstrap实现导航栏的2种方式
Nov 28 Javascript
React实现点击删除列表中对应项
Jan 10 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 Javascript
微信小程序select下拉框实现源码
Nov 08 Javascript
如何实现js拖拽效果及原理解析
May 08 Javascript
Electron整合React使用搭建开发环境的步骤详解
Jun 07 Javascript
vue项目中openlayers绘制行政区划
Dec 24 Vue.js
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程序
2006/10/09 PHP
Warning: session_destroy() : Trying to destroy uninitialized sessionq错误
2011/06/16 PHP
PHP操作文件类的函数代码(文件和文件夹创建,复制,移动和删除)
2011/11/10 PHP
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
ThinkPHP的常用配置选项汇总
2016/03/24 PHP
php+jQuery ajax实现的实时刷新显示数据功能示例
2019/09/12 PHP
stream.js 一个很小、完全独立的Javascript类库
2011/10/28 Javascript
js post提交调用方法
2014/02/12 Javascript
22点关于jquery性能优化的建议
2014/05/28 Javascript
基于jquery实现人物头像跟随鼠标转动
2015/08/23 Javascript
js动态添加的DIV中的onclick事件简单实例
2016/07/25 Javascript
微信小程序 出现47001 data format error原因解决办法
2017/03/10 Javascript
js自定义瀑布流布局插件
2017/05/16 Javascript
webpack 2的react开发配置实例代码
2017/07/28 Javascript
微信小程序实现拖拽 image 触摸事件监听的实例
2017/08/17 Javascript
node创建Vue项目步骤详解
2020/03/06 Javascript
详解vue中使用transition和animation的实例代码
2020/12/12 Vue.js
使用python实现省市三级菜单效果
2016/01/20 Python
Python中matplotlib中文乱码解决办法
2017/05/12 Python
浅谈python中的占位符
2017/11/09 Python
Python获取好友地区分布及好友性别分布情况代码详解
2019/07/10 Python
WxPython实现无边框界面
2019/11/18 Python
Python递归调用实现数字累加的代码
2020/02/25 Python
浅谈Python中range与Numpy中arange的比较
2020/03/11 Python
python中的selenium安装的步骤(浏览器自动化测试框架)
2020/03/17 Python
python画环形图的方法
2020/03/25 Python
在keras里面实现计算f1-score的代码
2020/06/15 Python
浅谈keras2 predict和fit_generator的坑
2020/06/17 Python
Python创建临时文件和文件夹
2020/08/05 Python
OnePlus加拿大官网:中国国际化手机品牌
2020/10/13 全球购物
小学英语教师先进事迹
2014/05/28 职场文书
美术教师个人总结
2015/02/06 职场文书
高中班主任心得体会
2016/01/07 职场文书
2016年党员公开承诺书范文
2016/03/24 职场文书
导游词之台湾阿里山
2019/10/23 职场文书
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS