Вы можете переопределить функцию xhr
в ajaxSetup
или даже при каждом отдельном вызове $.ajax
.Это задокументировано в $.ajax
документах (спасибо, Ник!) .
Ваш код может выглядеть так (не проверено), если вы хотите сделать это все время:
(function() {
var originalXhr = jQuery.ajaxSettings.xhr;
jQuery.ajaxSetup({
xhr: function() {
var req = originalXhr();
if (req) {
// Add your progress handler
}
return req;
}
});
})();
... или вот так ( живой пример ) только для конкретного запроса:
$.ajax({
url: "path/to/resource",
xhr: function() {
var req = $.ajaxSettings.xhr();
if (req) {
// Add your handler here
}
return req;
}
});
К сожалению,хотя переопределение xhr
задокументировано, местоположение сконфигурированного в данный момент (jQuery.ajaxSettings.xhr
), по-видимому, не соответствует действительности, поэтому технически вы все еще полагаетесь на недокументированную функцию, используя в своем коде jQuery.ajaxSettings.xhr
.Вам просто нужно перепроверить, что это все еще присутствует в каждом выпуске точек, вероятно, он не будет слишком много двигаться (и jQuery.ajaxSettings
по крайней мере упомянуто в документах, здесь ).