4

我有一个遗留网站的要求,我不能重新设计屏幕,我不能使用标题无缓存标签,我必须防止用户在他们注销并按下他们的后退按钮后看到缓存的屏幕。

我几乎是一个解决方案(见下面的代码位)

当页面加载时,我使用 JQuery AJAX 函数来调用 Web 应用程序并查看用户是否仍然登录。如果没有,用户将被重定向到登录屏幕

<html>
<head>
 <!-- all the usual header stuff, plus links to the jQuery libaries, first script tag on page below -->

<script language = "javascript">

 $.get("/acme/confirm_authentication",function(data){
            if( data != "confirmed"){
                location.href = "logout";
            }
  }); 



</script>
</head>
<body>

blah blah blah
</body>
</html>

我不喜欢这个解决方法的最大的一点是,在 JQuery 函数完成之前,我可以在一瞬间获取内容。

有没有一种方法可以阻止页面加载/渲染,直到 JQuery AJAX 功能停止?

谢谢


更新:答案:


我修改了下面接受的答案以包含“缓存:false”选项。在 Firefox 和 Chrome 中,通过后退按钮访问的页面的缓存副本将运行 .ajax(),但会使用变量“数据”的缓存副本,这会给我一个过时的答案。

$.ajax({
 url: "/acme/confirm_authentication",
 async:false,
 cache: false,
 success: function(data) {
     if( data != "confirmed"){
         location.href = "logout";
     }
 }         

});

4

1 回答 1

8

您可以使用属性设置为 false的ajax函数来执行此操作。async

  $.ajax({
     url: "/acme/confirm_authentication",
     success: function(data) {
         if( data != "confirmed"){
             location.href = "logout";
         }
     },
     async:false
  });
于 2013-08-14T21:25:46.863 回答