1. 程式人生 > >ajax請求 session過期跳轉首頁的兩種處理方式

ajax請求 session過期跳轉首頁的兩種處理方式

在處理session過期跳轉首頁時遇到了一些困難,經過百度發現了大致兩種方法,在這裡進行一下整理:

1、直接重寫jquery   ajax方法:

(function($){  
    //備份jquery的ajax方法  
    var _ajax=$.ajax;  
      
    //重寫jquery的ajax方法  
    $.ajax=function(opt){  
        //備份opt中error和success方法  
        var fn = {  
            error:function(XMLHttpRequest, textStatus, errorThrown){},  
            success:function(data, textStatus){
            	alert(textStatus);
            	//在這裡進行跳轉
            }  
        }  
        if(opt.error){  
            fn.error=opt.error;  
        }  
        if(opt.success){  
            fn.success=opt.success;  
        }  
          
        //擴充套件增強處理  
        var _opt = $.extend(opt,{  
            error:function(XMLHttpRequest, textStatus, errorThrown){  
                //錯誤方法增強處理  
                  
                fn.error(XMLHttpRequest, textStatus, errorThrown);  
            },  
            success:function(data, textStatus){  
                //成功回撥方法增強處理  
                fn.success(data, textStatus);  
            }  
        });  
        _ajax(_opt);  
    };  
})(jQuery);

這種方法與jquery.min.js庫有衝突,使用時一定要注意!

2、基於ajaxSetup來進行控制:

在登入的過濾器或者攔截器中新增一下程式碼:

 if("XMLHttpRequest".equals(((HttpServletRequest) request).getHeader("X-Requested-With"))){  
		        ((HttpServletResponse) response).setHeader("sessionstatus", "timeout");  
		        ((HttpServletResponse) response).setHeader("redirectUrl", ((HttpServletRequest) request).getContextPath() + "/login.jsp");  
		    } else {  
		    	((HttpServletResponse) response).sendRedirect(path2);
		    }  
		    // 如果session為空表示使用者沒有登入就重定向到login.jsp頁面  
		    return;  
js中新增:
//全域性的AJAX訪問,處理AJAX清求時SESSION超時  
if(typeof($)!="undefined"){  
    $.ajaxSetup({  
        contentType : "application/x-www-form-urlencoded;charset=utf-8",  
        complete : function(XMLHttpRequest, textStatus) {  
            // 通過XMLHttpRequest取得響應頭,sessionstatus  
            var sessionstatus = XMLHttpRequest.getResponseHeader("sessionstatus");  
            if (sessionstatus == "timeout") {  
                // 這裡怎麼處理在你,這裡跳轉的登入頁面  
                window.location.replace(XMLHttpRequest.getResponseHeader("redirectUrl"));  
            }  
        }  
    });  
}
jquery不推薦使用ajaxSetup容易影響其他外掛ajax發生衝突,以上兩種方式在使用過程中一定要謹慎!

相關推薦

ajax請求 session過期處理方式

在處理session過期跳轉首頁時遇到了一些困難,經過百度發現了大致兩種方法,在這裡進行一下整理: 1、直接重寫jquery   ajax方法: (function($){ //備份jquery的ajax方法 var _ajax=$.ajax;

react axios和ajax網路請求攔截(session過期登入

網路請求攔截經常也可用到,比如在所有介面訊息請求頭部加上驗證資訊token之類的,或者介面報某類錯誤時統一處理。這裡主要用在請求介面時,判斷session是否過期,統一返回狀態碼區分,如果過期了跳轉登入頁重新登入 攔截axios部分 重新封裝axios請求

asp.net 實現session過期

BasePage.cs public class BasePage : System.Web.UI.Page { public BasePage() { } protected overrid

解決session過期到登錄並跳出iframe框架(或者layui彈出層)

ref 界面 func ESS pre 這不 session ram 用戶 當用戶長時間停留在管理界面沒有操作,等到session過期後,進行了操作,那麽只是iframe跳轉到login頁面,這不是我們想要的結果。解決方法:在login頁面加一個邏輯判斷: <scr

Ajax 請求時後臺 前端頁面不更新踩坑記錄

style 返回 url direct edi pos 通過 繼續 檢查 踩坑環境:前端:Ajax post請求,json類型數據;後端 C#+MVC,前後端正常通信,但是當後臺驗證權限不通過時會RedirectToAction跳轉到登錄頁,結果現象是後臺正常執行登錄頁的渲

java 攔截器做session過期登入頁面時無法重定向問題

這個問題好坑,也沒人寫個標題出來提醒大家不要再入坑,以前只是用,沒具體自己寫寫,這次專案用到了,自己寫寫還真遇到問題,這次記錄下來防止再次入坑。 1.起初懷疑攔截器配置有問題,經過驗證,攔截器沒有問題,訪問攔截到了,response也重定向了,就是頁面無法跳轉。

django 登入和session過期

http://www.cnblogs.com/fnng/p/3841246.html 這裡需要說名一下,使用的是django自帶的session封裝技術,是在設定了request.session['userName'] = userName 之後,才會在mysql的ses

springMVC session過期到登入介面

1、非ajax的傳統型跳轉和ajax請求資料跳轉2、使用springMVC攔截器攔截請求,判斷session是否過期3、使用ajaxSetup 全域性判斷session請求是否過期。        這種方式不是最好的方式,貌似有三種方式處理ajax重定向的問題,修改jquer

Python3.6+Django2.0.2 實現使用者登入+--左側選單+新增使用者資訊--展示使用者資訊

一、環境要求:python版本:Python3.6.4web框架:Django2.0.2開發工具:Eclipse+Pydev資料庫:mysqlweb:html+css+JavaScript二、實現需求:1、使用者登入:使用者登入頁面,輸入使用者名稱、密碼(非加密),通過與資料

Ajax 請求session過期的統一處理

web專案中,如果一個頁面長時間沒有操作,而session已經過期了,這時如果執行一些操作,比如查詢 編輯 等ajax請求,如果使用的是jquery $.post()方法,即使後臺判斷session過期,進行轉發,前臺也不會有響應,而對使用者造成一定的困惑。

spring mvc session過期到登入頁面方法

在頁面上新增以下語句 <script> <c:if test="${currentAccount == null}">window.location.href = path+"/index/login"; </c:if> </scr

thinkPHP 5 nginx 部署時,只問題

在使用tp5時候把它部署到伺服器上發現一個奇葩的事情,就是它預設訪問config配置的預設頁,無論怎麼跳轉到其他介面都不好使,最終重寫了  Nginx 的配置檔案解決了這個問題server{

session過期到登陸頁面並跳出iframe框架的個方法

原文章地址:http://1008610086.blog.51cto.com/4995677/1538464 最近在做攔截器,判斷使用者登入後操作超時,失去許可權然後要重新登入,但是用的iframe,返回的登陸頁總是在框架中顯示,我百度了下,總是隻有其中一個方法,現在

小程序初始化加載,根據登錄狀態判斷還是登錄

tor storage ora onload 一閃而過 sch 成功 class switch 準備是在小程序初始化進行一下登錄狀態判斷,每次登陸以後會在storage裏存一個user,根據這個值判斷,沒登陸過小程序啟動進登錄頁面,登陸過直接跳轉首頁: App({

安卓專案實戰之設定Activity動畫的5實現方式

前言 在介紹activity的切換動畫之前我們先來說明一下實現切換activity的兩種方式: 1,呼叫startActivity方法啟動一個新的Activity並跳轉其頁面 2,呼叫finish方法銷燬當前的Activity返回上一個Activity介面 當呼叫startActiv

jsp中 jsp的方式及區別

//注意:不推薦中文檔名如"目的頁面.jsp",此處僅為了教程需要而使用   // 帶session,不帶request的跳轉(客戶端跳轉)   responst.sendRedirect("目的頁面.jsp");   // 帶session,帶request的跳轉(

ios AppStore的方法,以及遇到的坑

  iOS跳轉appStore的兩種方法網上已經有很多的部落格進行講解了,主要是app內跳轉相關網頁,和跳出app,跳轉到AppStore。相關的部落格大家可以參看參考部落格 為了防止參考部落格實效,我把相關程式碼copy了一下,希望大家不要介意。 1,

微信瀏覽器提示_微信外部瀏覽器提示的2實現方式

上半年公司有一個新的APP專案上線,我們在專案首頁做個二維碼,然後使用者用手機掃一掃就能下載了。但是很多使

JFreeChart與AJAX+JSON+ECharts處理方式生成熱詞統計可視化圖表

線型 static 後臺 標註 png tip 開源工具 grid 讀取 本篇的思想:對HDFS獲取的數據進行兩種不同的可視化圖表處理方式。第一種JFreeChar可視化處理生成圖片文件查看。第二種AJAX+JSON+ECharts實現可視化圖表,並呈現於瀏覽器上。    

android------引導實現方式(原生和WebView網頁實現)

有的App當你第一次開啟的是和常常會有引導頁來描述一些App資訊(功能,特點),當然也要做驗證,驗證第二次進入不進入引導頁,直接進入App,此部落格藉助ViewPager來實現引導頁, ViewPager類提供了多介面切換的新效果,是谷歌在3.0之後加入的新特性,所以需要引