【问题标题】:jQuery load function handling session timeoutsjQuery 加载函数处理会话超时
【发布时间】:2013-03-07 08:26:53
【问题描述】:

jQuery 加载功能很好,但是如何处理会话超时? 我用它来将新内容添加到 div 中,但如果我的会话超时,登录屏幕会出现在该 div 中而不是完整页面中。

有什么办法可以解决吗?

我在 JSP 页面中使用它。

是否应该将其全部替换为 jsp:include pages 并在每次需要调整页面时刷新页面,或者是否有办法使用 jQuery 加载功能来执行此操作并正确处理会话超时?

我已尝试在调用之前验证会话,但由于没有对服务器的任何调用,会话似乎仍然有效,直到加载请求发现它已过期。 所以当前页面中session不为null,但是当执行加载取回其他页面时,会取而代之的是登录页面。

【问题讨论】:

    标签: javascript jquery jsp session-timeout


    【解决方案1】:

    我想您的登录页面是重定向。然后你可以使用complete回调(第三个参数,见doc)来检查响应。

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,并解决了。所以我将分享我自己的答案。

      一开始我想看看响应码是不是301,but you cannot catch 301 redirect in the complete callback.只是抛出200,是重定向的结果。

      所以我改为阅读xhr.responseText 并检查它是否以"<html>" 开头。因为如果是,则意味着响应包含重定向的登录页面而不是模态内容。

       $(".modal-wrapper").load("/modal" + e, function(response, status, xhr){
            if (xhr.responseText.trim().startsWith("<html>")) {
                console.log("redirect to login page");
                window.location.href = "/";
            }
        });
      

      实际上,我想做的不是window.location.href = "/";,而是document.write(xhr.responseText);,这样就无法发出不必要的请求。但由于一些 UI 问题,我无法实现这一点;P

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-10-27
        • 2012-09-16
        • 2014-03-22
        • 2013-06-21
        • 1970-01-01
        • 2012-03-08
        • 2018-01-24
        相关资源
        最近更新 更多