2010-11-29 41 views

回答

8

您可以覆蓋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

+1 - 請注意,這是記錄,最後一個選項在這裏:http://api.jquery.com/jQuery.ajax/ – 2010-11-29 12:10:29