1. 程式人生 > >Ajax 請求session過期的統一處理

Ajax 請求session過期的統一處理

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

使用jquery提供的一些全域性的ajax事件可以解決這一問題:

  1. ajaxComplete()函式用於設定當AJAX請求完成(無論成功或失敗)時執行的回撥函式。

這是一個全域性AJAX事件函式,用於為所有AJAX請求的ajaxComplete事件繫結事件處理函式。當AJAX請求完成(無論成功或失敗)時,將觸發ajaxComplete事件,並執行繫結的事件處理函式。

該函式必須在jQuery物件例項上呼叫,ajaxComplete()將為每個匹配元素的ajaxComplete事件繫結處理函式。當AJAX請求完成後,所有匹配元素上的處理函式都將被觸發執行。事件處理函式內的this將指向當前DOM元素。

你可以在同一元素多次呼叫該函式,從而繫結多個事件處理函式。觸發ajaxComplete事件時,jQuery會按照繫結的先後順序依次執行繫結的事件處理函式。

注:從jQuery 1.8開始,該函式只能為document物件的ajaxComplete事件繫結處理函式,為其他元素繫結的事件處理函式不會起作用。
如果在jQuery.ajax()或jQuery.ajaxSetup()中將選項引數global設為false,可以禁止該AJAX請求觸發全域性的AJAX事件。

例:

$(document).ajaxComplete(function(event,request, settings){
        //do something you want...
        // e.g. if timeout then  goto you login page.... top.location.href="login.jsp"
});
  1. ajaxSetup
/**
 * ajaxSetup 可以設定未來(全域性)的AJAX請求預設選項
 * 主要設定了AJAX請求遇到Session過期的情況
 */
$.ajaxSetup({
    type: 'POST'
, complete: function(xhr,status) { var sessionStatus = xhr.getResponseHeader('sessionstatus'); if(sessionStatus == 'timeout') { var top = getTopWinow(); var yes = confirm('由於您長時間沒有操作, session已過期, 請重新登入.'); if (yes) { top.location.href = '/skynk/index.html'; } } } }); /** * 在頁面中任何巢狀層次的視窗中獲取頂層視窗 * @return 當前頁面的頂層視窗物件 */ function getTopWinow(){ var p = window; while(p != p.parent){ p = p.parent; } return p; }

相關推薦

Ajax 請求session過期統一處理

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

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

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

Extjs6關於Ajax和form表單提交以及store請求session超時的處理方法

對於Store的處理 每個store配置的時候,配上load監聽,載入時處理: usrStore : { model : 'App.model.Usr', autoLoad :

Shiro結合攔截所有的ajax並對其請求響應進行統一處理的辦法

1. spring-mvc.xml中 給shiro的配置增加一條屬性:<property name="filters"> <map> <entry key="authc"> <bean class="com.a

ajax請求session失效重定向到登錄頁面

ttr == als xmlhttp 操作 var ajax請求 direct 自定義 在ajax請求的頁面引入一個自定義的AjaxRedirect.js的文件 AjaxRedirect.js的代碼如下: $(function(){ $.ajaxSetup({

Ajax請求Session超時問題

       我在做專案時有時會遇到session超時問題,如果session超時,平常請求沒有什麼問題,通過攔截器可以正確跳到登陸頁面,可是你如果用ajax請求的話這就出現問題了,因為ajax是非同步的,區域性重新整理,所以登陸介面不

電商平臺專案之——Ajax請求,服務端處理完不跳到success

1、問題描述:       最近在修改電商平臺的釋出商品頁面,釋出商品時,前端與後臺互動採用Ajax  Post請求,就這麼一個簡單的畫面,我遇到一個非常奇怪且困擾我很久的問題:       (1)商品釋出失敗(有時候能釋

ajax請求產生異常的處理

如下,一個正常的ajax請求,如果後臺產生異常怎麼處理。// 封裝公寓資訊傳入後臺 var apartment = { "apartmentName" : $("#apartmentName").val(), "sex" : $("#sex").val(), "

python session過期timeout處理

1、使用webpy自身帶的session配置選項,具體如下: web.config.session_parameters['cookie_name'] = 'webpy_session_id' web.config.session_parameters['cookie_do

jquery ajax 請求415 400 異常處理

1.在確定請求路徑無誤,引數無誤,並且沒有跨域的問題下出現415錯誤 解決方法:在ajax請求中加上contentType: ‘application/json’, $.ajax({ type: "POST", contentType: 'a

mvc ajax 請求 session失效,跳轉到登入頁

 public class BaseController : Controller    {        ///        /// 登入驗證/掉線攔截        /// protected override void OnActionExecuting(ActionExecutingContext

ajax請求成功,失敗處理

請求失敗處理 function requesFail(xhr){ var status = xhr.status; if (status) { showNotify("error", "網路錯誤", "發生網路錯誤,錯誤碼為:" + xhr.status);

如果優雅地處理多個請求並在請求結束後統一處理

如何優雅地處理多個請求並在請求結束後統一處理 前不久我接到一個需求,首頁更新的資料是從3個介面獲取的,三個介面獲取到的資料後再重新整理介面,大家可以腦補X東,X寶的app首頁,螢幕從上到下,上面是banner區,用來展示促銷商品之類的廣告,中間是幾個按

shiro 攔截器實現session過期攔截ajax請求處理

攔截器程式碼: package com.xlqh.outlook.shirofilter; import java.io.IOException; import org.apache.shiro.

Ajax請求session失效,統一處理跳轉到登陸頁

在登陸也上做一個標記比如 <meta name="sp" content="shanzhubuchiwandoujie"> 當ajax成功返回的data是登陸頁面,也就是包含以上資訊,就去登陸頁。 需要做的是重寫jquery的ajax方法,在所有的ajax請求

jQuery ajax處理 和後置處理;專案中ajax自動設定 token 請求頭, 介面響應code的統一處理

專案中經常會遇到需要統一設定 ajax請求的預處理 和 需要統一處理ajax返回的需求 比如登入時需要 在頭部新增token(X-Auth-Token) 請求完需要判斷code為已退出token失效(3001)和許可權不足(3002)的情況 開始使

處理session過期(401)身份過期使用者重新登陸的方法之重寫ajax

前言 之前在專案中遇到一個問題,就是在專案中為了安全起見,設定session的有效期限,當用戶登入超過這個有效期限,希望使用者重新驗證自己的身份,證明是本人的操作,需要要使用者重新登陸,即當session過期時,使用者操作與伺服器發生互動,伺服器返回401的狀

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

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

Session超時或無效,處理ajax請求

       專案使用的是spring-security安全框架,當session超時時,如果不是ajax請求,很簡單就能實現跳到指定的頁面。但是ajax請求就會有問題。session超時的時候,點選到ajax請求就會彈出一些頁面原始碼檔案。        由於一直都在忙

Spring MVC異常統一處理(包括普通請求異常以及ajax請求異常)

通常SpringMVC對異常的配置都是返回某個jsp檢視給使用者,但是通過ajax方式發起請求,即使發生異常,前臺也無法獲得任何異常提示資訊。因此需要對異常進行統一的處理,對於普通請求以及ajax請求的異常都有效。 1.Spring MVC的異常處理機制 Spring