Javascript $.post()不';如果有';它后面有一个re direct:window.location.href=

Javascript $.post()不';如果有';它后面有一个re direct:window.location.href=,javascript,jquery,Javascript,Jquery,我有一个列表,当单击该列表中的元素时,我想在数据库中记录一些信息,因此我使用以下方法: <li class="item"><a href="javascript:addactivity()">Add activity</a></li> <script> function addactivity(){ $.post('update.php'); window.location.href = "http://www

我有一个列表,当单击该列表中的元素时,我想在数据库中记录一些信息,因此我使用以下方法:

<li class="item"><a href="javascript:addactivity()">Add activity</a></li>

<script>
function addactivity(){

    $.post('update.php');   
    window.location.href = "http://www.mysite.com/page.php";

}
</script>
  • 函数addactivity(){ $.post('update.php'); window.location.href=”http://www.mysite.com/page.php"; }
    如果我在window.location.href=“”;数据库被更新,因为$.post('update.php');工作正常。如果我不在窗外发表评论。location.href=“”;数据库未更新,但可直接访问www.mysite.com


    出于某种原因,添加window.location.href=“”;停止$.post('update.php');从跑步开始。是否仍有办法解决此问题?

    使用成功方法,直到post完成后再进行重定向

    $.post('update.php', function(){
        window.location.href = "http://www.mysite.com/page.php";
    });
    

    使用回调来管理这种情况:

    function onSuccess() {
      window.location.href = "http://www.mysite.com/page.php";
    }
    
    function onFailure() {
      alert('An error has ocurred while updating database');
    }
    
    $.post('update.php').done(onSuccess).fail(onFailure);
    
    阅读其他示例,了解其工作原理:

    从jQuery1.5开始,jQuery的所有Ajax方法都返回 XMLHTTPRequest对象。此jQuery XHR对象,或“jqXHR,” 由$.get()返回,实现Promise接口,提供所有 承诺的属性、方法和行为(请参阅) 对象以获取更多信息)。jqXHR.done()(为了成功), jqXHR.fail()(用于错误)和jqXHR.always()(用于完成,是否 成功或错误)方法采用函数参数,该参数在 请求终止


    这涉及到$.get,但同样适用于$.post。

    使用$.post的成功回调。退房