2010-11-29 11 views

Respuesta

8

Puede anular la función xhr en ajaxSetup o incluso en cada $.ajax llamada individual. Esto está documentado en $.ajax documentos (gracias Nick!).

Su código podría tener este aspecto (no probado) si usted quiere hacer esto todo el tiempo:

(function() { 
    var originalXhr = jQuery.ajaxSettings.xhr; 
    jQuery.ajaxSetup({ 
     xhr: function() { 
      var req = originalXhr(); 
      if (req) { 
       // Add your progress handler 
      } 
      return req; 
     } 
    }); 
})(); 

... o así (live example) por sólo una solicitud en particular:

$.ajax({ 
    url: "path/to/resource", 
    xhr: function() { 
    var req = $.ajaxSettings.xhr(); 
    if (req) { 
     // Add your handler here 
    } 
    return req; 
    } 
}); 

Lamentablemente, aunque se documenta la anulación de xhr, la ubicación de la configurada actualmente (jQuery.ajaxSettings.xhr) no parece ser así, por lo que técnicamente todavía se basa en un documento indocumentado d función usando jQuery.ajaxSettings.xhr en su código. Solo necesita comprobar que todavía está presente en cada versión de punto, probablemente no se moverá demasiado (y jQuery.ajaxSettings es al menos mencionado en los documentos, here).

+1

+1 - Solo tenga en cuenta que está documentada, última opción aquí: http://api.jquery.com/jQuery.ajax/ –

+0

@Nick Craver: Creo que se está refiriendo al hecho de que jQuery.ajaxSettings no tiene su propia página de documentación en http://api.jquery.com/. – PleaseStand

Cuestiones relacionadas