如果在它之后有重定向,则$ .post()不起作用:window.location.href =

时间:2014-02-06 23:57:44

标签: javascript jquery

我有一个列表,当点击该列表中的元素时,我想在我的数据库中记录一些信息,所以我使用以下内容:

<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>

如果我注释掉window.location.href =“http://www.mysite.com/page.php”;数据库更新因为$ .post('update.php');工作正常。如果我不注释掉window.location.href =“http://www.mysite.com/page.php”;数据库未更新,但重定向工作到www.mysite.com。

由于某种原因添加window.location.href =“http://www.mysite.com/page.php”;停止$ .post('update.php');从跑步。无论如何要解决这个问题吗?

2 个答案:

答案 0 :(得分:2)

使用回调来管理情况:

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);

请阅读the documentation其他示例及其工作原理:

  

从jQuery 1.5开始,所有jQuery的Ajax方法都返回了一个超集   XMLHTTPRequest对象。这个jQuery XHR对象,或“jqXHR”,   $ .get()返回实现Promise接口,全部提供   Promise的属性,方法和行为(请参阅Deferred   对象获取更多信息)。 jqXHR.done()(成功),   jqXHR.fail()(用于错误)和jqXHR.always()(用于完成,是否   成功或错误)方法采用在何时调用的函数参数   请求终止。

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

答案 1 :(得分:0)

使用成功方法,该方法会等到帖子完成后再进行重定向

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