【问题标题】:How to display html content depending on result in onload function如何根据 onload 函数的结果显示 html 内容
【发布时间】:2012-05-17 04:52:21
【问题描述】:

我有 mainmenu.jsp、login.jsp 和 logout.jsp。流程如下

login.jsp --->mainmenu.jsp ---> logout.jsp

第一个用户可以看到 login.jsp,成功登录后用户可以看到 mainmenu.jsp,点击注销按钮的用户会被转发到 logout.jsp 文件。在 logout.jsp 文件中,如果使用单击浏览器后退按钮,他/她可以看到上一页(mainmenu.jsp),但我想显示 login.jsp 页面。为了避免这种情况,我在加载主 menu.jsp 时使用 ajax 调用检查变量。我可以将页面重定向到 login.jsp。这是一个类似闪烁问题的问题。在服务器返回结果之前,我的 mainmenu.jsp 文件被加载。服务器返回结果后,页面被重定向到登录页面。我想限制当前页面加载,直到任何响应来自服务器。我怎样才能做到这一点? 我在主菜单的加载中使用以下代码

$(window).load(function() {

                $.ajaxSetup({async:false});  //execute synchronously
                var isSessionExists = ""; 

                $.post("getSession", {}, function(data, textStatus, xhrObject) {
                    isSessionExists = data.split("=")[1];

                });
                $.ajaxSetup({async:true});
                if((isSessionExists.indexOf('NO')>=0)){
//                    alert("...inside condition...")
                    top.location="index.jsp";
                }else{
                    alert("....BREAK..."+isSessionExists)
                }

            });

【问题讨论】:

  • 也许是 setInterval 和用 CSS 隐藏闪烁部分的组合,直到你准备好?
  • 您是否也在使用任何控制器(MVC)?如果是,那么最好检查控制器是否授权用户查看页面(换句话说,用户已登录或注销)。从控制器您可以返回正确的页面。如果您不使用 MVC,那么我想服务器端必须有一些东西可以进行这种操作。使用 JavaScript 做这样的事情是可能的,但不建议这样做。

标签: jquery html jsp


【解决方案1】:

尝试在你的jsp中添加以下代码sn-p

<%
   response.setHeader("Pragma","no-cache"); // HTTP 1.0
   response.setHeader("Cache-Control","no-store"); // HTTP 1.1
   response.setDateHeader("Expires", 0);
%>

也通过这个出色的解释Prevent Going Back after LOGOUT

【讨论】:

  • +1 表示最后一个 commnet 和链接“防止在注销后返回”。这正是我想要的。
猜你喜欢
  • 2021-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-11
相关资源
最近更新 更多