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: 2 roky
|
0