Autor Zpráva
Libor_u4
Profil *
Zdravím pánové a dámy, potřeboval bych poradit...

Mám funkci, která načte json přes ajax:

function render_tab() {
  $.ajax({
    url: 'urladresa',
    dataType:"json",
      success: function(json) {
        
neco provedu
 
        });
            
    }
})
}

A potřebuji, aby se po success defaultne volala každou vteřinu stále dokola (není to věc, která bude volná přes net, proto není třeba řešit zátěž apod.)

Ovšem na stránce budou ještě dva buttony..."autorefresh on/off" a resfresh.
Kdy první button zapíná/vypíná to automatické volání.
A druhé tlačítko bude aktivní pouze když bude autorefresh off a zavolá funkci jen jednou.


Poradí prosím někdo?

Moc díky
_es
Profil
Libor_u4:
Nerozumiem celkom, na čo sa pýtaš, keď si si dal odpoveď už do nadpisu. Použi funkciu setInterval. Opakované spúšťanie funkcie zrušíš funkciou clearInterval.
Libor_u4
Profil *
_es:

Udělal jsem tedy následující:

function render_tab() {
  $.ajax({
    url: 'urladresa',
    dataType:"json",
      success: function(json) {
        
neco provedu

timer();
 
        });
            
    }
})


function timer()  
{  
var interval = setInterval(render_tab, 1000);  
}

function stoptimer()  
{  
  clearInterval(interval);  
} 

A zjišťuji, že se funkce volá rychleji, než jednou za 1s.

A pomocí:
<input onClick="stoptimer(this.form)" id="updating" type="button" value="auto refresh"/>

se mi nedaří zastavit volaní uvedené funkce :-((
Chamurappi
Profil
Reaguji na Libora_u4:
Každou sekundu nastavuješ, aby se jednou za sekundu nastavoval znovu interval (opakující se).

var interval
To je lokální proměnná, která zanikne při skončení funkce timer.
Libor_u4
Profil *
Jasně už mi to došlo, takhle to je uplná blbost.. musel bych použít setTimeout, ale to zase nevím jak ten cyklus zastavit :-(
_es
Profil
Libor_u4:
musel bych použít setTimeout
Nemusel, stačí pozorne čítať rady.
Libor_u4
Profil *
Stale mi to nedochazi...
_es
Profil
Libor_u4:
nedochazi
Čomu z [#4] nerozumieš?
Libor_u4
Profil *
_es:
Tomu samozřejmě rozumím, ale nevím jak to udělat, abych mohl použít setInterval, zda vždy použít clearInterval, abych nejprve funkci zastavil a pak ji znovu po vteřině zavolal...
_es
Profil
Libor_u4:
abych nejprve funkci zastavil a pak ji znovu po vteřině zavolal...
Presne to ti zabezpečia funkcie setInterval a clearInterval. Aj keď nie je celkom jasné, čo má byť „zastavenie funkcie“, snáď zastavenie časovača, ktorý tú funkciu opakovane spúšťa - to spravíš funkciou clearInterval, samozrejme si musíš identifikátor časovača niekam uložiť, čo v [#3] nerobíš ([#4]).

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: