我的代码在jquery 1.4中工作正常,我尝试将其升级到1.5.
但是这部分代码停止工作 – 它的标准beforeSend处理程序
但是这部分代码停止工作 – 它的标准beforeSend处理程序
beforeSend: function (xhr,options) { // __forced_abort = false; // xhr.upload.addEventListener('progress',on_progress,false); xhr.upload.addEventListener('load',on_loaded,false); xhr.addEventListener('abort',on_abort,false); ....
我知道在1.5还没有真正的xhr – 只是jqXHR高级抽象,似乎是jqXHR没有上传属性.
问题:如何在jQuery 1.5中获得纯(旧)xhr对象?
解决方法
如果您的beforeSend是全球性的:
var oldXHR = jQuery.ajaxSettings.xhr; jQuery.ajaxSettings.xhr = function() { var xhr = oldXHR(); if(xhr instanceof window.XMLHttpRequest) { xhr.upload.addEventListener('progress',false); xhr.upload.addEventListener('load',false); xhr.addEventListener('abort',false); } return xhr; };
如果您的beforeSend特定于特定请求:
$.ajax({ xhr: function() { var xhr = jQuery.ajaxSettings.xhr(); if(xhr instanceof window.XMLHttpRequest) { xhr.upload.addEventListener('progress',false); xhr.upload.addEventListener('load',false); xhr.addEventListener('abort',false); } return xhr; } });