我有一个列表,当点击该列表中的元素时,我想在我的数据库中记录一些信息,所以我使用以下内容:
<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');从跑步。无论如何要解决这个问题吗?
答案 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";
});