国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

解決ExtJs中ajax重定向的問題

clasnake / 3465人閱讀

摘要:問題問題來了,都是采用向后臺發送請求,這時候如果重定向到無權限的錯誤頁面就會產生問題。最直接的解決方案就是,每一個向后臺發送的請求,后臺都會返回,然后判斷,不符合條件就。

首先要明確的是,ajax是局部刷新,是不支持重定向的,只能通過window.location.href="http://xxx/error.html"的方式實現,在后臺重定向只會把html返回給前臺,頁面并不會跳轉。

需求

首先我們項目采用的是extJs做UI框架,后臺是SSM。現在項目要加入簡單數據權限過濾的功能,于是我使用過濾器,獲取用戶訪問的接口地址,判斷只要與session中的可以訪問的數據接口權限不匹配,那么就跳轉到無權限的錯誤頁面。

問題

問題來了,ExtJs都是采用ajax向后臺發送請求,這時候如果重定向到無權限的錯誤頁面就會產生問題。最直接的解決方案就是,每一個向后臺發送的ajax請求,后臺都會返回message,然后判斷messsage,不符合條件就window.location.href="http://xxx/error.html"。但是,如果初期有這樣的設計就好了,但我這個項目是后期才加權限的功能,如果一個個改起來,肯定是不可能的。

解決方法
解決方法1

新建一個js文件,添加如下代碼:

//為Ext的ajax添加監聽
//requestcomplete:請求完成
Ext.Ajax.addListener("requestcomplete",function(conn, response, options, eOpts){
    //后臺也可以放入請求頭還獲取錯誤信息,前臺通過`response.getAllResponseHeaders()`來獲取
    //var msg = response.getAllResponseHeaders();
    if(response.responseText.indexOf("error") != -1){
        window.location.href="http://xxx/error.html";
    }
},this);

一般我們的項目都是一個主的main.jsp,然后里面一個個ExtJs的iframe,所以在main.jsp中直接引入剛才新建的js,當ajax請求完成后,接收到后臺返回的message,不符合條件,跳轉到錯誤頁面。

解決方法2

方法2比較通用也比較簡單,直接在filter中使用out.print輸出一段js進行跳轉。

    UserVo u = (UserVo) session.getAttribute("user");
    if (u == null) {
    PrintWriter out = res.getWriter();
    if (req.getHeader("x-requested-with") != null && req.getHeader("x-requested-with").equals("XMLHttpRequest")) {
        String message = path + "/user/loginHome";
        out.print(message);
        return;
    }else {
        out.println("");
        out.println("");
        out.println("");
        return;
    }

文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。

轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/66403.html

相關文章

  • extjs-mvc結構實踐(二):基本頁面

    摘要:接著來,上一篇搭建了基本的項目骨架,到最后,其實啥也沒看見。。。目標全屏顯示左側導航菜單,右側標簽頁切換操作內容區域。一般模型與你后臺返回的數據結構一一對應。給其他組件提供一致接口使用數據。整個構成一個所謂的。 接著來,上一篇搭建了基本的項目骨架,到最后,其實啥也沒看見。。。書接上回,開始寫UI效果。 目標 全屏顯示、左側導航菜單,右側標簽頁切換操作內容區域。包含header和foo...

    changfeng1050 評論0 收藏0
  • window.open被瀏覽器攔截解決方案

    摘要:原因分析深入研究當瀏覽器檢測到非用戶操作產生的新彈出窗口,則會對其進行阻止。但是,被瀏覽器攔截我們代碼中要彈出的窗口并不是程序員所希望的。 現象 最近在做項目的時候碰到了使用window.open被瀏覽器攔截的情況,搞得人無比郁悶啊,雖然在自己的環境可以對頁面進行放行,但是對用戶來說,不能要求用戶都來通過攔截。何況當出現攔截時,很多小白根本不知道發生了啥,不知道在哪里看被攔截的頁面,簡...

    rickchen 評論0 收藏0
  • Extjs - model總結

    摘要:數據讀取器相當于原始數據格式與標準數據格式之間的橋梁,它屏蔽了原始數據格式不同對程序開發造成的影響。零是有效的,但空字符串無效。 用了Extjs快一年了,這里整理一下model。 數據模型 showImg(https://segmentfault.com/img/bVzXAR); Extjs 中數據包總共包含了40多個類,其中有三個類比其他類有更重要的地位,它們分別是:model、st...

    EastWoodYang 評論0 收藏0
  • Web項目如何防止客戶端復發送請求

    摘要:在項目中,有一些請求或操作會對數據產生影響比如新增刪除更新,針對這類請求一般都需要做一些保護,以防止用戶有意或無意的重復發起這樣的請求導致的數據錯亂。本文總結了一些防止客戶端重復發送請求的方法。 在Web項目中,有一些請求或操作會對數據產生影響(比如新增、刪除、更新),針對這類請求一般都需要做一些保護,以防止用戶有意或無意的重復發起這樣的請求導致的數據錯亂。 本文總結了一些防止客戶端重...

    fireflow 評論0 收藏0
  • Web項目如何防止客戶端復發送請求

    摘要:在項目中,有一些請求或操作會對數據產生影響比如新增刪除更新,針對這類請求一般都需要做一些保護,以防止用戶有意或無意的重復發起這樣的請求導致的數據錯亂。本文總結了一些防止客戶端重復發送請求的方法。 在Web項目中,有一些請求或操作會對數據產生影響(比如新增、刪除、更新),針對這類請求一般都需要做一些保護,以防止用戶有意或無意的重復發起這樣的請求導致的數據錯亂。 本文總結了一些防止客戶端重...

    sewerganger 評論0 收藏0

發表評論

0條評論

最新活動
閱讀需要支付1元查看
<