jQuery ajax全域函數處理session到期後的ajax跳轉問題_jquery

來源:互聯網
上載者:User

做web常常需要考慮session到期的問題,session到期就讓頁面跳轉到登入介面去,但是存在這樣一個問題,當頁面到期後,使用者請求背景方式有兩種:傳統方式和非同步請求方式,傳統方式倒好解決,請求到後台,攔截到到期的操作,直接跳轉,但是非同步請求不會重新整理整個頁面,因此對session到期的處理也不能按往常的方式,需要另外的操作。

具體思路:攔截器中判斷是否為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);};});

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.