jQuery和vue 設置ajax全局請求


一個很常見的問題,如果用戶登錄網站session過期,需要用戶返回登錄頁面重新登錄。

如果是http請求可以在后台設置攔截器,統一攔截並跳轉。但是ajax方法並不能通過后台直接跳轉。

所以我們可以寫一個ajax全局方法,讓每一個ajax請求都訪問這個方法,如果經過判斷session過期,可以跳轉到登錄頁面。

以下是引用jQuery的ajax全局方法:

$.ajaxSetup({
    error : function(x, status, e) {
        if (x.status == '403') {
            alert('您沒有權限執行當前操作!');
        } else {
            console.log('系統錯誤,請聯系管理員!');
        }
        return false;
    },
    complete : function(r, s) {
        var istimeout = r.getResponseHeader('sessionstatus')=='timeout';
        if (istimeout) {
            //alert(r.responseText);
            var loginurl = r.getResponseHeader("loginurl");
            parent.window.location = loginurl;
        }
    }
});

 

我當時做這個項目的時候還用到了vue,所以把vue的ajax全局方法也寫一下

    Vue.http.interceptors.push(function(request) {

            // modify request
            request.method = 'POST';

            // return response callback
            return function(response) {
                var sessionAjax = response.headers.map.sessionstatus;
                if (sessionAjax != undefined) {
                    var loginurl = response.headers.map.loginurl[0];
                    parent.window.location = loginurl;
                }
            };
        });

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM