Używam następujące polecenia $ .ajax załadować plik z aplikacją PhoneGap:Zdarzenie postępu XHR nie jest uruchamiane, dopóki nie zakończy się przesyłanie?
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;
}
});
Upload działa dobrze. Jednak zdarzenie progress uruchamia się tylko jeden raz, po zakończeniu przesyłania. W rzeczywistości nie uruchamia się podczas przesyłania - więc postęp przesyłania nie jest wyświetlany. Podczas przesyłania jest tylko pauza, a następnie wyświetla się w 100%.
Jakieś pomysły, co robię źle?
co jest rozmiar pliku? –
Czy próbowałeś: 'xhr.upload.addEventListener (" progress ", updateProgress, false);'? –
Wielkość pliku to kilka megabajtów - na tyle duże, że przesłanie zajmuje więcej niż 1/2 sekundy. Dodanie detektora zdarzeń do xhr.upload nie powoduje niczego w ogóle, nawet po zakończeniu. Dzięki! – user1031947