2011-02-06 14 views
6

मेरा कोड jquery 1.4 में ठीक काम करता है और मैं इसे 1.5 तक अपग्रेड करने का प्रयास करता हूं। लेकिन कोड काम करना बंद कर के इस भाग - अपने मानक beforeSend हैंडलरjQuery 1.5 में शुद्ध XMLHTTPRequest ऑब्जेक्ट कैसे प्राप्त करें?

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 havent - बस jqXHR highlevel अमूर्त और हो रहा है jqXHR अपलोड गुण नहीं।

प्रश्न: jQuery 1.5 में शुद्ध (पुरानी) xhr ऑब्जेक्ट कैसे प्राप्त करें?

उत्तर

0

कोशिश उपयोग jQuery.ajaxSettings.xhr()

+0

के रूप में उपयोग करें? क्या आप थोड़ा उदाहरण दे सकते हैं? – dimkalinux

12

यदि आपका beforeSend वैश्विक था:

var oldXHR = jQuery.ajaxSettings.xhr; 
jQuery.ajaxSettings.xhr = function() { 
    var xhr = oldXHR(); 
    if(xhr instanceof window.XMLHttpRequest) { 
     xhr.upload.addEventListener('progress', on_progress, false); 
     xhr.upload.addEventListener('load', on_loaded, false); 
     xhr.addEventListener('abort', on_abort, false); 
    } 
    return xhr; 
}; 

यदि आपका beforeSend एक विशेष अनुरोध के लिए विशिष्ट था:

$.ajax({ 
    xhr: function() { 
     var xhr = jQuery.ajaxSettings.xhr(); 
     if(xhr instanceof window.XMLHttpRequest) { 
      xhr.upload.addEventListener('progress', on_progress, false); 
      xhr.upload.addEventListener('load', on_loaded, false); 
      xhr.addEventListener('abort', on_abort, false); 
     } 
     return xhr; 
    } 
}); 
+0

यह किसी के लिए काम करता है? –

+0

क्या यह आपके लिए काम नहीं करता है? –

+1

ऐसा लगता है कि यह xhr होना चाहिए: फ़ंक्शन() { –

2

Raphaels जवाब का विस्तार प्रतिशत शामिल करने के लिए ...

 $.ajax({ 
      type: 'POST', 
      success: function(data) 
      { 

      } 
      xhr: function() { 
       var xhr = jQuery.ajaxSettings.xhr(); 
       if(xhr instanceof window.XMLHttpRequest) { 
        xhr.upload.addEventListener('progress', function(){ 
         var percent = 0; 
         var position = event.loaded || event.position; /*event.position is deprecated*/ 
         var total = event.total; 
         if (event.lengthComputable) { 
          percent = Math.ceil(position/total * 100); 
         } 

         var percentVal = percent+ '%'; 
         $('#progressBar').css('width',percentVal); 
         $('#uploadPercentage').html(' '+percentVal); 
        }, false); 
       } 
       return xhr; 
      },         
     }); 
संबंधित मुद्दे