在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ jquery攔截全局請求

jquery攔截全局請求

$.ajaxSetup({
    complete: function (XMLHttpRequest, textStatus) {
        var res = XMLHttpRequest.responseText;
        try {
            var jsonData = JSON.parse(res);
            if (jsonData.result == 707) {
                   //這里window.location.href="../login.html";
            }
        } catch (e) {}
    }
});

需求,需要攔截頁面所有請求,然后判斷是否登錄失效。
使用jquery的上述代碼,有時候攔截成功,有時就是失敗。
這個代碼放在公共代碼里面的、
請問,如何攔截頁面的所有請求,來判斷用戶登錄是否失效?
謝謝。

回答
編輯回答
茍活

你還是要依靠后臺返還的數(shù)據(jù)啊,angular攔截器不錯的

2017年10月19日 05:22
編輯回答
初念

全局complete函數(shù)會在ajax觸發(fā)success或error回調(diào)之后觸發(fā),是不是之前注冊的success或者error函數(shù)在執(zhí)行的過程中報錯了,導(dǎo)致全局的complete函數(shù)沒有執(zhí)行

2018年4月15日 00:27
編輯回答
別瞎鬧

包裝一層ajax,攔截全部異步請求。

/**
 * 系統(tǒng)通用js
 * @type {{ajax: common.ajax}}
 */

var common = {

    ajax: function (options) {
        // 顯示遮罩
        if (EasyCheck.StringUtils.isEmpty(options["beforeSend"])) {
            options["beforeSend"] = function () {
                // before do something
                
            };
        } else {
            var beforeSendFunction = options["beforeSend"];
            options["beforeSend"] = function (XMLHttpRequest) {
               // before do something
              
                beforeSendFunction(XMLHttpRequest);
            };
        }
        // 隱藏遮罩
        if (EasyCheck.StringUtils.isEmpty(options["complete"])) {
            options["complete"] = function () {
                 // complete do something
                 
            };
        } else {
            var completeFunction = options["complete"];
            options["complete"] = function (XMLHttpRequest, textStatus) {
                // complete do something
                
                completeFunction(XMLHttpRequest, textStatus);
            };
        }
        // 異步請求
        $.ajax(options);
    }

};

然而判斷是否登錄失效的處理明顯是后端的事情,前端只管請求,由后端的攔截器去處理是否登錄,不要無謂地增加前端復(fù)雜度。

2018年7月21日 10:19
編輯回答
綰青絲

可以根據(jù)token的方式來驗證登錄成不成功

2018年1月11日 21:33
編輯回答
愿如初

推薦的寫法是給document綁定ajax事件處理,如:

$(document).ajaxComplete(function(ev, xhr, settings) {
    var res = xhr.responseText;
    try {
        var jsonData = JSON.parse(res);
        if (jsonData.result == 707) {
            //
        }
     } catch (e) {}
});

而不是用ajaxSetup去搞回調(diào)。

2017年4月23日 04:47