2014-02-06 20 views
0

我有一个列表,单击从列表中的元素,当我想记录一些信息在我的数据库中,以便我使用了以下内容:

<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

使用成功回调$。员额。查看[jQuery.post](http://api.jquery.com/jquery.post/) – jfmbrennan

回答

2

使用前的回调管理情况:the documentation别人的例子

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

阅读,为什么它的工作原理:

从jQuery 1.5开始,所有jQuery的Ajax方法都返回一个超集 XMLHTTPRequest对象。这个jQuery XHR对象,或“jqXHR,” 由$获得()实现了无极接口回来,让这一切 的属性,方法和承诺的行为(更多信息请参见递延 对象)。 jqXHR.done()(用于成功), jqXHR.fail()(用于错误)和jqXHR.always()(用于完成,无论是 成功还是错误)方法都带有一个函数参数,当请求 终止。

这里讨论$ .get,但是同样适用于$ .post。

0

直到柱完成使用成功的方法,将等待它重定向

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