0

나의 현재 AJAX 응용 프로그램 (간체) :XMLHttpRequest의 진행 이벤트 핸들러 호환성은 다음과 같이 jQuery를 보이는 사용하는 인터넷 익스플로러

$.ajax({ 
    url: '/somefile', 
    timeout : timeOutVar, 
    success: function(data) { 
     console.log('success'); 
    }, 
    error: function(data) { 
     console.log('error'); 
    } 
}); 

나는 다음과 같이 progress 이벤트 핸들러를 사용하여 해당 코드를 업데이트했습니다.

$.ajax({ 
    url: '/somefile', 
    timeout : timeOutVar, 
    success: function(data) { 
     console.log('success'); 
    }, 
    error: function(data) { 
     console.log('error'); 
    }, 
    xhr: function() { 
     var xhr = new window.XMLHttpRequest(); 
     xhr.addEventListener("progress", function(evt){ 
      console.log('progress'); 
     }, false); 
     return xhr; 
    } 
}); 

Internet Explorer 10 및 기타 모든 최신 브라우저에서 완벽하게 작동합니다. 그러나 이전 버전의 Internet Explorer에서는 문제가 발생했습니다. IE9,8,7은 progress 이벤트 핸들러를 호출하지 않고 모든 것이로드 될 때 success을 호출합니다.

그래서 이전 Internet Explorer 버전에는 호환성 문제가 있는지 궁금합니다. 아쉽게도 XmlHttpRequest의 어떤 부분이 IE 버전에서 작동하는지 정확히 정의한 리소스를 찾을 수 없었습니다. 누구나 그러한 리소스를 알고 있거나 코드에서 무엇이 잘못되었을 수 있습니까?

답변

0

beforeSendcomplete 콜백을 모두 사용할 수 있으며 대신 xhr 구현을 재정의 할 수 있습니다.

+0

'beforeSend'에서'progress' 이벤트 핸들러를 정의하는 것이 효과가 없습니다. 아마 jQuery 자체가'progress'를 지원하지 않기 때문입니다. – str