Autor Zpráva
Taps
Profil
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
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.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0