1

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

有没有办法处理这个?

我在 JSP 页面中使用它。

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

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

4

2 回答 2

1

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

于 2013-03-07T08:37:10.903 回答
0

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

起初我想检查响应代码是否为 301,但您无法在complete回调中捕获 301 重定向。它只是抛出 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

于 2018-05-24T02:49:24.827 回答