Neustálý reload funkce po 1s – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Neustálý reload funkce po 1s – JavaScript, AJAX, jQuery – Fórum – Programujte.comNeustálý reload funkce po 1s – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

jAkErCZ0
Stálý člen
14. 7. 2020   #1
-
0
-

Vytvořil jsem si funkci na automatický reload po nějakém čase ale místo toho se mi to reloaduje každý 1s proč?

<script>
        (function($, undefined){
            $.nette.ext('autorefresh',{
                load:   function(rh){
                    $(this.autorefreshSelector).each(function(){
                        var url = $(this).attr("data-refresh-url");
                        var refreshTime = $(this).attr("data-refresh-time");

                        console.log(url);
                        console.log(refreshTime);
                        //reloadData(url,refreshTime);
                    });
                },
                success: function (payload){

                }
            },{
                autorefreshSelector:    ".autorefresh",
            });
        })(jQuery);

        function reloadData(url,refreshTime) {
            $.nette.ajax({
                type: 'GET',
                url: url,
                success:    function(payload){
                    setInterval(function(){
                        this.reloadData(url,refreshTime);
                    },refreshTime * 1000);
                    playSound();
                }
            });
        }

        function playSound()
        {
            var audio = new Audio('http://www.beepzoid.com/ringtones/Short-single-ring.mp3');
            audio.play();
        }
    </script>

zde konzole která vrací url a čas

/projects/ryzí-domov/Intranet/dashboard/?user_id=1&do=updateNotification
(index):551 60000

Co sem udělal špatně? :O

Nahlásit jako SPAM
IP: 77.48.47.–
gna
~ Anonymní uživatel
1182 příspěvků
14. 7. 2020   #2
-
0
-

Jednak metoda setInterval spouští zadanou funkci opakovaně, tak prostě funguje.

A pak reloadData nastaví interval na reloadData, který zase nastaví interval na reloadData, atd.

Jestli to chceš spustit jen jednou, tak místo setInterval použij setTimeout a z reloadData to přesuň do load.

Nahlásit jako SPAM
IP: 213.211.51.–
jAkErCZ0
Stálý člen
14. 7. 2020   #3
-
0
-

#2 gna

No rád bych to pustil jednou za tu dobu co mi to vrací ten 
refreshTime

Nahlásit jako SPAM
IP: 77.48.47.–
gna
~ Anonymní uživatel
1182 příspěvků
14. 7. 2020   #4
-
0
-

Aha, já jsem nevěnoval pozornost tomu logu. V data-refresh-time zřejmě není číslo. Tak z té hodnoty nejdřív vytáhni tu část, co určuje ten čas.

Nahlásit jako SPAM
IP: 213.211.51.–
jAkErCZ0
Stálý člen
15. 7. 2020   #5
-
0
-

#4 gna
Ale je. vrací to číslo 60000 tak jak ukazuji v konzoli.

Nahlásit jako SPAM
IP: 77.48.47.–
gna
~ Anonymní uživatel
1182 příspěvků
15. 7. 2020   #6
-
0
-

Já vidím (index):551 60000.

Nahlásit jako SPAM
IP: 213.211.51.–
jAkErCZ0
Stálý člen
15. 7. 2020   #7
-
0
-
Nahlásit jako SPAM
IP: 77.48.47.–
gna
~ Anonymní uživatel
1182 příspěvků
15. 7. 2020   #8
-
0
-

Pak by se ten timer měl nastavit na 60000000ms a netuším proč je to 1s.

Nahlásit jako SPAM
IP: 213.211.51.–
peter
~ Anonymní uživatel
3606 příspěvků
16. 7. 2020   #9
-
0
-

Tipnu si mozne chyby: setinterval misto settimeout, undefined refreshtime, page reload.
Bud mas refreshtime jako undefined, protoze to chybne definujes v ajaxu.
Nebo spoustis setinterval. Casovac zustane viset a opakovane spousti totez. Nemas ho zruseny pres clearInterval. Kdyz napises interval 1000, a 1000x to spustis, tak je v pameti 1000 casovacu, ktere jsou s rozdilem par ms. Po urcite dobe je mezi prvnim a poslednim i sekundovy rozdil.

Nahlásit jako SPAM
IP: 90.176.141.–
Zjistit počet nových příspěvků

Přidej příspěvek

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 40 hostů

Podobná vlákna

Neustálý dotaz na DB — založil Lukas

Neustálý pád programu — založil Kowalsky

VB - Reload picture — založil Denoy

Reload stránky — založil yxcvb

Auto reload stranky — založil 7raul

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032020 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý