8
我需要addEventListener
才能收聽progress
事件之前打開XMLHttp連接(即xhr.open()
),但beforeSend
方法返回已打開的xhr實例。我將如何覆蓋它來正確添加偵聽器?
我需要addEventListener
才能收聽progress
事件之前打開XMLHttp連接(即xhr.open()
),但beforeSend
方法返回已打開的xhr實例。我將如何覆蓋它來正確添加偵聽器?
您可以覆蓋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;
}
});
})();
...或者是這樣的(live example):
$.ajax({
url: "path/to/resource",
xhr: function() {
var req = $.ajaxSettings.xhr();
if (req) {
// Add your handler here
}
return req;
}
});
不幸的是,雖然覆蓋xhr
被記錄,但當前配置的一個(jQuery.ajaxSettings.xhr
)的位置似乎不是,所以在技術上你仍然依賴於非目標d功能在您的代碼中使用jQuery.ajaxSettings.xhr
。您只需仔細檢查每個點的發佈是否仍然存在,它可能不會太多移動(並且jQuery.ajaxSettings
至少在文檔中提到,here)。
+1 - 請注意,這是記錄,最後一個選項在這裏:http://api.jquery.com/jQuery.ajax/ – 2010-11-29 12:10:29