Ich verwende den folgenden $ Schnipsel Befehl eine Datei von einer PhoneGap-Anwendung hochladen:XHR-Fortschrittsereignis wird nicht ausgelöst, bis der Upload abgeschlossen ist?
function updateProgress(evt) {
if (evt.lengthComputable) {
var percentComplete = evt.loaded/evt.total * 100;
console.log(percentComplete + "%");
}
}
$.ajax({
url: url,
type: "POST",
data: data,
cache: false,
dataType: "json",
processData: false,
contentType: false,
success: successCallback,
error: errorCallback,
xhr: function() {
var xhr = new window.XMLHttpRequest();
xhr.addEventListener("progress", updateProgress, false);
return xhr;
}
});
Der Upload funktioniert gut. Das Fortschrittsereignis wird jedoch nur einmal ausgelöst, sobald der Upload abgeschlossen ist. Es wird beim Hochladen nicht ausgelöst - der Upload-Fortschritt wird also nicht angezeigt. Es gibt nur eine Pause während des Hochladens, und dann wird 100% angezeigt.
Alle Ideen, was ich falsch mache?
was ist die Größe der Datei? –
Haben Sie versucht: 'xhr.upload.addEventListener (" progress ", updateProgress, false);'? –
Dateigröße ist ein paar Megabyte - groß genug, dass es mehr als eine halbe Sekunde dauert, um hochzuladen. Das Hinzufügen des Ereignis-Listeners zu xhr.upload führt dazu, dass überhaupt nichts ausgelöst wird, auch nicht vollständig. Vielen Dank! – user1031947