jQuery ajax全局函數(shù)處理session過(guò)期后的ajax跳轉(zhuǎn)問(wèn)題
做web常常需要考慮session過(guò)期的問(wèn)題,session過(guò)期就讓頁(yè)面跳轉(zhuǎn)到登錄界面去,但是存在這樣一個(gè)問(wèn)題,當(dāng)頁(yè)面過(guò)期后,用戶(hù)請(qǐng)求后臺(tái)的方式有兩種:傳統(tǒng)方式和異步請(qǐng)求方式,傳統(tǒng)方式倒好解決,請(qǐng)求到后臺(tái),攔截到過(guò)期的操作,直接跳轉(zhuǎn),但是異步請(qǐng)求不會(huì)刷新整個(gè)頁(yè)面,因此對(duì)session過(guò)期的處理也不能按往常的方式,需要另外的操作。
具體思路:攔截器中判斷是否為ajax請(qǐng)求 —— 是ajax請(qǐng)求則返回一個(gè)消息 ——頁(yè)面添加一個(gè)全局的ajax處理事件,對(duì)消息進(jìn)行判斷,如果是報(bào)告session過(guò)期,則location到登錄頁(yè)面
第一步,攔截器判斷是否為ajax請(qǐng)求:
if(request.getHeader("x-requested-with")!=null && request.getHeader("x-requested-with").equalsIgnoreCase("XMLHttpRequest")){ //是ajax請(qǐng)求,則返回個(gè)消息給前臺(tái) PrintWriter printWriter = response.getWriter(); printWriter.print("{sessionState:timeout}"); printWriter.flush(); printWriter.close(); }else{ //不是ajax請(qǐng)求,則直接跳轉(zhuǎn)頁(yè)面 }
第二步,設(shè)置全局ajax處理事件,處理session過(guò)期的問(wèn)題,類(lèi)似于一個(gè)攔截器或者過(guò)濾器:
$.ajaxSetup({ contentType:"application/x-www-form-urlencoded;charset=utf-8", cache:false , complete:function(data,TS){ //對(duì)返回的數(shù)據(jù)data做判斷, //session過(guò)期的話(huà),就location到一個(gè)頁(yè)面 } } });
這是一個(gè)基于jQuery的異步處理機(jī)制,完整代碼我沒(méi)寫(xiě),上次在公司寫(xiě)的代碼,帶不出來(lái),文章里的代碼有些還是在網(wǎng)上找來(lái)粘進(jìn)去的,凌晨都過(guò)了半小時(shí)了,太困了,記錄下思路而已。
PS:ajax 操作全局監(jiān)測(cè),用戶(hù)session失效
jQuery(function ($) { // 備份jquery的ajax方法 var _ajax = $.ajax; // 重寫(xiě)ajax方法,先判斷登錄在執(zhí)行success函數(shù) $.ajax = function (opt) { var _success = opt && opt.success || function (a, b) { }; var _opt = $.extend(opt, { success: function (data, textStatus) { try { if (data.sessionstatus == false) { //用戶(hù)失效進(jìn)行操作 //return; } } catch (e) { } _success(data, textStatus); } }); _ajax(_opt); }; });
- Java Web實(shí)現(xiàn)session過(guò)期后自動(dòng)跳轉(zhuǎn)到登陸頁(yè)功能【基于過(guò)濾器】
- 詳解springmvc控制登錄用戶(hù)session失效后跳轉(zhuǎn)登錄頁(yè)面
- php頁(yè)面跳轉(zhuǎn)session cookie丟失導(dǎo)致不能登錄等問(wèn)題的解決方法
- webix+springmvc session超時(shí)跳轉(zhuǎn)登錄頁(yè)面
- ajax提交session超時(shí)跳轉(zhuǎn)頁(yè)面使用全局的方法來(lái)處理
- Jsp中解決session過(guò)期跳轉(zhuǎn)到登陸頁(yè)面并跳出iframe框架的方法
- Session過(guò)期后自動(dòng)跳轉(zhuǎn)到登錄頁(yè)面的實(shí)例代碼
- Ajax Session失效跳轉(zhuǎn)登錄頁(yè)面的方法
- Session過(guò)期后實(shí)現(xiàn)自動(dòng)跳轉(zhuǎn)登錄頁(yè)面
相關(guān)文章
PHP+jQuery實(shí)現(xiàn)隨意拖動(dòng)層并即時(shí)保存拖動(dòng)位置
本文講解了如何采用PHP+MySQL+jQuery,實(shí)現(xiàn)隨意拖動(dòng)層并即時(shí)保存拖動(dòng)位置。 十分的實(shí)用,有需要的小伙伴可以參考下。2015-04-04jQuery is not defined 錯(cuò)誤原因與解決方法小結(jié)
今天在測(cè)試一個(gè)程序的時(shí)候,明顯已經(jīng)加載了jquery但總是提示jQuery is not defined,經(jīng)過(guò)多方測(cè)試終于發(fā)現(xiàn)了問(wèn)題,這里簡(jiǎn)單總結(jié)一下,需要的朋友可以參考下2017-03-03jQuery實(shí)現(xiàn)定位滾動(dòng)條位置
基于jQuery實(shí)現(xiàn)滾動(dòng)條滾動(dòng)到子元素位置以此來(lái)定位滾動(dòng)條位置,下面是小編給大家?guī)?lái)的實(shí)現(xiàn)代碼,代碼比較簡(jiǎn)單,需要的朋友可以參考下2016-08-08jQuery技巧大放送 學(xué)習(xí)jquery的朋友可以看下
jQuery技巧大放送 學(xué)習(xí)jquery的朋友可以看下,非常不錯(cuò)的整理,推薦。2009-10-10jQuery僅用3行代碼實(shí)現(xiàn)的顯示與隱藏功能完整實(shí)例
這篇文章主要介紹了jQuery僅用3行代碼實(shí)現(xiàn)的顯示與隱藏功能,以完整實(shí)例形式分析了jQuery實(shí)現(xiàn)鼠標(biāo)響應(yīng)及頁(yè)面元素屬性變換的相關(guān)技巧,需要的朋友可以參考下2015-10-10jQuery Validate插件實(shí)現(xiàn)表單驗(yàn)證
這篇文章主要為大家詳細(xì)介紹了jQuery Validate插件實(shí)現(xiàn)表單驗(yàn)證的相關(guān)資料,感興趣的小伙伴們可以參考一下2016-08-08EasyUI學(xué)習(xí)之Combobox級(jí)聯(lián)下拉列表(2)
這篇文章主要為大家詳細(xì)介紹了EasyUI學(xué)習(xí)之Combobox級(jí)聯(lián)下拉列表的相關(guān)資料,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2016-12-12基于jQuery和Bootstrap框架實(shí)現(xiàn)仿知乎前端動(dòng)態(tài)列表效果
最近基于jQuery和Bootstrap框架實(shí)現(xiàn)了一個(gè)仿知乎動(dòng)態(tài)列表的前端效果,基本實(shí)現(xiàn)了和知乎動(dòng)態(tài)列表相同的效果,下面小編通過(guò)本文給大家分享實(shí)現(xiàn)思路及代碼,對(duì)bootstrap 實(shí)現(xiàn)仿知乎前端動(dòng)態(tài)列表效果感興趣的朋友一起看看吧2016-11-11