location.replace()并在返回数据时移至新页面

时间:2015-11-20 10:34:56

标签: javascript jquery html

我需要在从$.post()

返回一些数据后转到另一个页面

verifystudent.html:

$.post('students/verify.php',
    function(results){
        preventdefault();
        location.replace("verifystudent.html");
        window.location.href = "completed/student_result.html;
    }

基本上,当收到verifystudent.html的数据时,它应移至student_result.html,当点击浏览器后退按钮时,应避免转到verifystudent.html。我怎么能这样做?

4 个答案:

答案 0 :(得分:1)

尝试使用此脚本会阻止浏览器的后退按钮,因此请在verifystudent.html

中使用它
<script type = "text/javascript" >
    history.pushState(null, null, 'pagename');
    window.addEventListener('popstate', function(event) {
         history.pushState(null, null, 'pagename');
    });
</script>

希望这有帮助。

答案 1 :(得分:0)

使用SessionStorage保存应用程序的状态。您可以创建一个密钥来标记学生已经过验证。

加载验证页面时检查此密钥,如果学生已经过验证,请使用location.replace更改网址。

另请阅读this有关阻止用户访问上一页的文章。

答案 2 :(得分:0)

对于您的第二个问题“,当点击浏览器后面时,应该避免去验证执行问题

我正在搜索相同的问题,我在网站上找到了以下代码。想在这里分享一下:

function noBack()
{
   window.history.forward()
}
noBack();
window.onload = noBack;
window.onpageshow = function(evt){ if(evt.persisted) noBack(); }
window.onunload = function(){ void(0); }

然而,正如开发人员的数量所指出的那样,这绝不是一种好的做法,应该避免出于各种原因。

答案 3 :(得分:0)

您可以使用navigation上的JQuery verifystudent.html事件将用户发送到所需的页面

 $(window).on("navigate", function (event, data) {
      var direction = data.state.direction;
      if (direction == 'back') {
         window.location.href = "completed/student_result.html;
      }
}