具體思路:攔截器中判斷是否為ajax請求 —— 是ajax請求則返回一個消息 ——頁面添加一個全局的ajax處理事件,對消息進行判斷,如果是報告session過期,則location到登錄頁面
第一步,攔截器判斷是否為ajax請求:
if(request.getHeader("x-requested-with")!=null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //是ajax請求,則返回個消息給前臺 PrintWriter printWriter = response.getWriter(); printWriter.print("{sessionState:timeout}"); printWriter.flush(); printWriter.close(); }else{ //不是ajax請求,則直接跳轉頁面 }
第二步,設置全局ajax處理事件,處理session過期的問題,類似于一個攔截器或者過濾器:
$.ajaxSetup({ contentType:"application/x-www-form-urlencoded;charset=utf-8", cache:false , complete:function(data,TS){ //對返回的數據data做判斷, //session過期的話,就location到一個頁面 } } });
這是一個基于jQuery的異步處理機制,完整代碼我沒寫,上次在公司寫的代碼,帶不出來,文章里的代碼有些還是在網上找來粘進去的,凌晨都過了半小時了,太困了,記錄下思路而已。
PS:ajax 操作全局監測,用戶session失效
jQuery(function ($) { // 備份jquery的ajax方法 var _ajax = $.ajax; // 重寫ajax方法,先判斷登錄在執行success函數 $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data, textStatus) { try { if (data.sessionstatus == false) { //用戶失效進行操作 //return; } } catch (e) { } _success(data, textStatus); } }); _ajax(_opt); }; });
更多jQuery ajax全局函數處理session過期后的ajax跳轉問題相關文章請關注PHP中文網!
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com