Czy można uzyskać postęp przesyłania dla formularza z bardzo dużymi polami tekstowymi za pomocą jQuery ajax? Myślę, że klient wie, ile bajtów zostało wysłanych, ale kiedy znajduję Google, znajduję tylko rozwiązania do przesyłania plików za pomocą kodu strony serwera.Postęp przesyłania pliku jQuery AJAX dla dużych pól tekstowych
To mój ajax-request:
$.ajax({
type: "POST",
url: "index.php?action=saveNewPost",
data: {textbox1: textbox1,textbox2: textbox2},
contentType: "application/x-www-form-urlencoded;charset=UTF-8",
success: function(){
//
}
});
Miałem nadzieję, że będzie coś w stylu „onProgress” z parametrem zawierającym ilość bajtów wysłanych już ...
znalazł rozwiązanie
$.ajax({
xhr: function() {
var req = $.ajaxSettings.xhr();
if (req) {
req.upload.addEventListener('progress', function(event) {
if (event.lengthComputable) {
$('#ajaxFeedbackDiv').html(event.loaded); // = 'test'; //event.loaded + '/' + event.total;
}
}, false);
}
return req;
},
type: "POST",
url: "index.php?action=saveNewPost",
data: {textbox1: textbox1,textbox2: textbox2},
contentType: "application/x-www-form-urlencoded;charset=UTF-8"
}
});
to wydaje się działać, altough nadal istnieją
2 problemy:
- połączenia na moim localhost jest zbyt szybki, więc trudno, aby zobaczyć „postęp” faktycznie działa. Zainstalowałem to narzędzie na komputerze Macintosh w tej samej sieci i widzę, że działa idealnie.
- Nie jestem pewien, czy będzie to przyjazne dla przeglądarek niezgodnych z XHR/HTML5, tj. Po prostu przesłać bez informacji o postępie?
Właściwie tam naprawdę 'onprogress' zwrotna w' obiektu XMLHttpRequest'. Jest to jednak nowy standard i nie wszystkie przeglądarki go obsługują. – Licson
proszę zobaczyć, co dodałem powyżej, to działa. Dzięki za wsparcie –