2011-07-29 54 views
0

也許我錯誤地使用了JQuery ajaxStop事件,但它不會在Google Chrome中觸發我。這裏是我的代碼:Google Chrome和JQuery有問題ajaxStop

if($("#calculateButton").length > 0) { 
    console.log("Setting calc button event"); 

    $("#calculateButton").ajaxStop(function() { 
     console.log("calculate on ajax stop"); 
     $(this).unbind('ajaxStop'); 
     $(this).click(); 
    }); 

    console.log("Sending test AJAX request"); 
    $.ajax({ 
     type: "POST", 
     url: "Backend/getcustomerrate.php", 
     success: function() { 
      console.log("AJAX request finished"); 
     } 
    }); 

    //this is what I had before testing 
    //Loading.loadOldQuote(qn, Loading.FOOTER); 
} else { 
    console.log("Could not find calculate button"); 
    setProgress("FATAL ERROR: Could not find calculate button"); 
} 

以下是我的控制檯輸出:

設置,計算的按鈕事件

發送測試AJAX請求

AJAX請求完成

我很困惑。不應該引發.ajaxStop事件嗎?

編輯:相同的代碼觸發Firefox中的相關事件,這是我主要用於測試。

編輯2:可能有其他的AJAX請求同時運行,但這些AJAX請求最終完成。我打開控制檯一段時間後打開頁面,並且期望的消息('根據AJAX停止計算')沒有出現。

編輯3:謝謝大家。事實證明,Chrome在發現錯誤時會暫停腳本執行,並且如果發生錯誤,則不會向控制檯輸出任何內容。錯誤不會在Firefox中觸發。

回答

0

我創建了一個快速jsfiddle它似乎工作。

是否有任何其他的Ajax請求在同一時間或在初始請求期間被調用?

按照documentation

每當一個Ajax請求完成後,jQuery的檢查是否還有其他優秀的Ajax請求。如果不存在,jQuery將觸發ajaxStop事件。

如果還有別的東西在運行,這個事件不會觸發。這是否可以在ajax請求的success函數中執行?

+0

不,因爲我有大量的可變數量的AJAX請求。當這個簡單的函數做到這一點時,創建一個精心設計的框架是沒有意義的。直接在Google Chrome中試用,看看會發生什麼。 – BlackSheep