使用ajaxStop回调来设置doument.location

时间:2010-09-27 14:32:00

标签: jquery ajax

我在循环中调用了许多jquery异步调用。在最后一次通话结束时,我希望页面刷新以显示通话结束后的结果。我所拥有的不起作用。我会很感激为什么它不工作或更好的解决方案的帮助!

感谢。

var ajaxCount = 0;

$(document).ready(function () {


    $(document).ajaxStart(function () {
        ajaxCount = 1;
    });
    $(document).ajaxStop(function () {
        ajaxCount = 0;
    });
}

function(){
    for(x loops){
        $ajax({...});
    }
    while (ajaxCount != 0) { }
    document.location = applicationRoot + 'Qc.mvc/ViewQc/' + batchId + '/1';

}

2 个答案:

答案 0 :(得分:2)

所有并发的ajax请求都已完成时会激活

.ajaxStop(),因此您可以直接使用它,例如:

function(){
  $(document).ajaxStop(function() {
    window.location.href = applicationRoot + 'Qc.mvc/ViewQc/' + batchId + '/1';
  });
  $ajax({...});
}

如果你需要活跃的AJAX请求数,jQuery已经维护了这个,它只是不公开它......它实际上是用于确定何时触发ajaxStartajaxStop事件的内容。你可以通过$.active获得它。在jQuery 1.5+中,它被移动到$.ajax.active

答案 1 :(得分:0)

为什么不将window.location.href = ....放在那个特定的ajax调用的回调函数中?

$(document).ajaxStart(function () {
    ajaxCount = ajaxCount + 1;
});
$(document).ajaxStop(function () {
    ajaxCount = ajaxCount - 1;
    if (ajaxCount == 0 && check if they're all fired)
            window.location.href = ...
});