| Autor | Zpráva | ||
|---|---|---|---|
| Taps Profil |
#1 · Zasláno: 8. 4. 2022, 12:56:43
Zdravím, pomocí ajaxu posílám požadavek na webovou službu. Zpracování trvá nějaký čas a tak bych potřeboval poradit, jak bych mohl uživatelům zpět na stránku posílat informaci kolik % je zpracováno, případě stavové zprávy typu (Nahrávám soubory, převádím soubor, získávám data)
Zkoušel jsem níže uvedený kod, ale ten mi v konzoli zobrazí jen číslo 1 var urlAction = $('#form').attr('action');
$.ajax({
xhr: function() {
var xhr = new window.XMLHttpRequest();
// Upload progress
xhr.upload.addEventListener("progress", function(evt){
if (evt.lengthComputable) {
var percentComplete = evt.loaded / evt.total;
//Do something with upload progress
console.log(percentComplete);
}
}, false);
return xhr;
},
type: 'POST',
url: urlAction,
data: $('form').serialize(),
beforeSend: function() {
$("#hlaska").show();
},
success: function (result) {
$('#hlaska').html('Převod byl dokončen - '+result);
}
});Děkuji |
||
| Firibix Profil |
#2 · Zasláno: 8. 4. 2022, 13:30:39
Reakce na Tapse:
Událost progress lze použít pro sledování průběhu odesílání požadavku na server (ve tvém případě je pravděpodobně odeslaný okamžitě, proto se do konzole vypíše jenom 1). JavaScript u klienta nemá možnost sám od sebe zjistit, že se požadavek nějak na serveru zpracovává nebo v jakém stavu je.
Typicky se to řeší tak, že po odeslání požadavku na dlouhotrvající operaci server zařadí operaci do fronty a přidělí jí ID. Přidělené ID ihned pošle klientovi v odpovědi a operaci začne na pozadí zpracovávat. Klient pak průběžně odesílá další požadavky s dotazem na stav operace s daným ID. Případně se dá použít websocket, kde místo periodických dotazů na stav klient naváže se serverem spojení a server mu sám od sebe posílá zprávy. |
||
|
Časová prodleva: 4 roky
|
|||
0