2013-01-09 23 views
4

這是不工作的代碼:ajaxStop()不火

$(document).ajaxStop(function() { 
    $(this).unbind("ajaxStop"); //prevent running again when other calls finish 

    // Display everything 
    display(); 
}); 

而且這裏是我的Ajax功能:

function getAjax(url, callback) { 
    jQuery.ajaxPrefilter(function(options) { 
     options.global = true; 
    }); 

    $.ajax({ 
     url: url, 
     type: "GET", 
     dataType: "jsonp", 
     success: callback 
    }); 
} 

爲什麼ajaxStop()從來沒有火?

回答

5

你會注意到我正在發出JSONP請求。我花了一輩子才找到這個問題,但是這個問題的答案可以在here找到。

從售票:

JSONP請求不保證完成(因爲錯誤並不 抓)。在這種情況下,jQuery 1.5強制全局選項爲false,所以 內部的ajax請求計數器保證在某個點或另一個位置返回到 零。

如果你希望所有的請求激發的事件,不管是什麼(在同一不一致1.4.4表現出的風險),你可以使用下面的預過濾器:

jQuery.ajaxPrefilter(function(options) { 
    options.global = true; 
}); 

例如:http://jsfiddle.net/X4JTx/