Próbuję zaimplementować formularz wysyłania i zwrócić status wysyłania, aby zwrócić do użytkownika przy użyciu xhr. Wszystko wydaje się być poprawnie zaimplementowane, jednak przy przesyłaniu wywołania zwrotne wydają się zbyt szybkie i zwracają o wiele większy procent niż faktycznie miało miejsce.Zdarzenie postępu XMLHttpRequest postępuje znacznie szybciej niż rzeczywisty upload
Z plikami ~ < 20 MB, natychmiast otrzymuję oddzwanianie, które pokazuje ponad 99%, podczas gdy przesyłanie jest kontynuowane przez pewien czas w tle.
Zobacz poniższy screengrab pokazujący konsolę z pliku 74 MB. Zostało to zrobione kilka sekund po zainicjowaniu przesyłania, a przesyłanie trwało przez kolejne ~ 60 sekund (zauważ, że tylko 3 wywołania zwrotne są rejestrowane (ładowane sumują się) (procentowy udział procentowy), a upload ajax jest kontynuowany z throberem).
Czy ktoś doświadczył tego i udało się uzyskać dokładną reprezentację statusu przesyłania?
(zdarzenie 'obciążenie' wyzwala poprawnie po procesie upload)
Oto mój kod:
$(this).ajaxSubmit({
target: '#output',
beforeSubmit: showRequest,
xhr: function()
{
myXhr = $.ajaxSettings.xhr();
if (myXhr.upload)
{
console.log('have xhr');
myXhr.upload.addEventListener('progress', function(ev){
if (ev.lengthComputable) {
console.log(ev.loaded + " " + ev.total);
console.log((ev.loaded/ev.total) * 100 + "%");
}
}, false);
}
return myXhr;
},
dataType: 'json',
success: afterSuccess
});
Może to zabrzmieć dziwnie, ale - czy przypadkiem nie zainstalowałeś żadnego programu antywirusowego? A jeśli masz, czy to samo zachowanie obserwuje się po wyłączeniu programu antywirusowego? – raina77ow
Twoje sugestie mogą mieć z tym coś wspólnego. Po raz pierwszy wypróbowałem go na moim komputerze domowym (Mac, bez antywirusa) (działał na moim komputerze) i działa jak urok! Będę musiał wyłączyć program antywirusowy na komputerze roboczym i sprawdzić, czy ma to jakiś wpływ. Ogromne podziękowania dla głów! – Fraser
@ raina77ow Wygląda na to, że przyczyną jest program antywirusowy. Wyłączyłem go na mojej maszynie roboczej i teraz działa świetnie. Dzięki. Pop poniżej odpowiedź, a ja uwolnię nagrodę. – Fraser