2013-01-04 8 views
6

Alles im folgenden Code funktioniert, außer dass das xhr.upload.onprogress-Ereignis nie ausgelöst wird.xhr.upload.onprogress funktioniert nicht

$(function(){ 

    var xhr; 

    $("#submit").click(function(){ 
     var formData = new FormData(); 
     formData.append("myFile", document.getElementById("myFileField").files[0]); 
     xhr = new XMLHttpRequest(); 
     xhr.open("POST", "./test.php", true); 
     xhr.send(formData); 

     xhr.onreadystatechange = function(){ 
      if(xhr.readyState === 4 && xhr.status === 200){ 
       console.log(xhr.responseText);    
      } 
     } 

     xhr.upload.onprogress = function(e) { 
      // it will never come inside here 
     } 
    }); 
}); 
+1

Ich denke, Sie müssen Ihre Handler vor den Aufrufen zu öffnen definieren. – VoidMain

+0

Jemand erstellt die Antwort, damit ich es bitte annehmen kann. @VoidMain war korrekt. – user1534664

+0

@ user1534664 xhr.upload.onprogress funktioniert einwandfrei mit IE, funktioniert aber nicht mit Chrome und FF. Hast du irgendeine Lösung? Bitte teilen Sie Ihre Kommentare –

Antwort

13

Sie sollten die Zuhörer erstellen, bevor die Verbindung, wie diese Öffnung:

$(function(){ 

    var xhr; 

    $("#submit").click(function(){ 
     var formData = new FormData(); 
     formData.append("myFile", document.getElementById("myFileField").files[0]); 
     xhr = new XMLHttpRequest(); 

     xhr.onreadystatechange = function(){ 
      if(xhr.readyState === 4 && xhr.status === 200){ 
       console.log(xhr.responseText);    
      } 
     } 

     xhr.upload.onprogress = function(e) { 
      // it will never come inside here 
     } 

     xhr.open("POST", "./test.php", true); 
     xhr.send(formData); 
    }); 
}); 

Hoffnung, das hilft.

+6

Sie können die Verbindung vor den Handlern öffnen, aber senden müssen. – jcubic

+0

@jcubic Ich bestätige – Pawel

+0

Hallo, ich habe ähnlichen Code wie folgt, funktioniert aber nicht auf der mobilen App. http://stackoverflow.com/questions/38581293/upload-using-xmlhttprequest-not-working-on-mobile Funktioniert xhr nicht auf reagieren js? –