首頁  >  文章  >  web前端  >  vue axios 在頁面切換時中斷請求方法

vue axios 在頁面切換時中斷請求方法

赶牛上岸
赶牛上岸原創
2018-03-06 14:42:041984瀏覽

下面小編就為大家分享一篇vue axios 在頁面切換時中斷請求方法 ajax,具有很好的參考價值,希望對大家有所幫助。一起跟著小編過來看看吧

如下:

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 + &#39;getCrTree&#39;,{ 
    devAddr : this.changeData.devAddr, 
    innerId : this.changeData.innerId, 
   }).then(ret=>{ 
    if(ret.status){ 
      
    }else{ 
     this.msg(ret.msg); 
    } 
   })

以上這篇vue axios 在頁面切換時中斷請求方法ajax就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持php中文網。

相關推薦:

微信小程式開發之選項卡(視窗底部TabBar)頁面切換實作

jquery結合html實作中英文頁面切換

微信公眾號選單進入的頁面切換第二次失效

以上是vue axios 在頁面切換時中斷請求方法的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn