2010-09-27 49 views
0

我有一個循環中調用jquery異步調用的數量。在最後一次通話結束時,我希望刷新頁面以顯示通話結果。我有什麼不工作。我將不勝感激爲什麼它不工作或更好的解決方案一些幫助!使用ajaxStop回調設置doument.location

謝謝。

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

如果您需要積極AJAX請求的計數和jQuery已經保持此,:當所有併發Ajax請求已經完成,所以你可以直接使用它,例如

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

.ajaxStop()火災它只是不公佈它......它實際上是用來確定何時觸發ajaxStartajaxStop事件。你可以通過$.active訪問它。在jQuery 1.5+中,它被移至$.ajax.active

+0

問題是,我有其他的Ajax調用頁面,我不想刷新後。它只有一個特定的ajax調用集,它應該觸發頁面刷新。 – shaw2thefloor 2010-09-27 14:36:40

+0

@ shaw2thefloor - 這就是爲什麼我會在*裏面綁定你所關心的功能......你可以根據需要綁定/解除綁定。 '$(document).unbind('ajaxStop')'將停止監聽事件。 – 2010-09-27 14:39:01

+0

啊...我明白了。謝謝你,它工作得很好。 – shaw2thefloor 2010-09-27 15:03:36

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 = ... 
}); 
+0

據我瞭解,有很多電話,他想在所有*完成時重定向。 – 2010-09-27 14:42:08

+0

然後,我會建議這樣的事情: $(document).ajaxStart(function(){ ajaxCount = ajaxCount + 1; }); $(文件).ajaxStop(函數(){ ajaxCount = ajaxCount - 1;如果 (ajaxCount == 0) window.location.href = ... }); – Zilverdistel 2010-09-27 14:47:57

+0

我試過了。我認爲問題出現在while循環中。它看起來好像到了while循環,然後從不運行ajaxStop();對不起,我只是改變了上面的代碼,使它更具代表性。 – shaw2thefloor 2010-09-27 14:50:53