Jak zastavit provádění setinterval() load() – JavaScript, AJAX, jQuery – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

Jak zastavit provádění setinterval() load() – JavaScript, AJAX, jQuery – Fórum – Programujte.comJak zastavit provádění setinterval() load() – JavaScript, AJAX, jQuery – Fórum – Programujte.com

 

Josef Kulhavý
~ Anonymní uživatel
2 příspěvky
30. 10. 2018   #1
-
0
-

Ahoj,

pomocí jQuery načítám každých 20 sekund obsah DIVu:

<div id="obnovit"></div>

<script>

$(document).ready(function() {
    setInterval(function() {
        $("#obnovit").load('test.php')
    }, 20000);
});

</script>

Test.php načítá data z databáze. Nedokázal byste prosím někdo poradit, jak načítání zastavit, pokud Test.php v DIVu zobrazí určitou hodnotu? Tedy, aby se load() již neprováděl a v divu zůstal obsah, který se načetl jako poslední.

Napadlo mě výstup Test.php obalit do <span id="neco"> a testovat jQuery, zda id=neco existuje, ale při pokusech jsem nebyl úspěšný.

Díky.

Nahlásit jako SPAM
IP: 89.190.74.–
gna
~ Anonymní uživatel
1891 příspěvků
30. 10. 2018   #2
-
0
-

setInterval zrušíš pomocí clearInterval a load umožňuje zadat funkci, která se provede po načtení.

Nahlásit jako SPAM
IP: 213.211.51.–
MilanL+1
Grafoman
31. 10. 2018   #3
-
0
-

#2 gna
no mám dojem že měl na mysli něco jiného a to přerušení LOADu na základě obsahu, to je myslím blbost.

#1 Josef Kulhavý
tak jak jsi položil otázku to určitě nepůjde.

pokud ti jde o podmíněnou aktualizaci a aby se ti netahal zbytečně ten obsah z test.php, musel bys to rozložit nejdřív poslat dotaz na tu hodnotu podle které to chceš řídit a pak teprve bud aktualizovat obsah nebo ne.

Případně udělat load test.php s podmínkou, která na základě podmínky vrátí bud obsah nebo "nic", do datového objektu a na základě obsahu, pak případně vložit do DIVu.. 

Nahlásit jako SPAM
IP: 91.139.9.–
peter
~ Anonymní uživatel
4014 příspěvků
31. 10. 2018   #4
-
0
-

Josef Kulhavý
Jak zastavit setInterval?

this.func.timerStart = function()
	{
//alert('start');
	root.func.timerStop();
	root.vars.timer.counter = 0;
	root.vars.timer.timer = setInterval(root.func.timerRun, root.vars.timer.speed); //  uloz timer do promenne
	}

this.func.timerStop = function()
	{
//alert('stop');
	if (root.vars.timer.timer!=null)
		{
		clearInterval(root.vars.timer.timer); // zastav timer v promenne
		}
	root.vars.timer.timer = null;
	}

this.func.timerRun = this.func.arrowGroupMove;

Tu kaskadu si nevsimej, je to soucasti class. Konkretne (mezera strili, spousti interval):

https://mlich.zam.slu.cz/x/js-tanks.htm

Nahlásit jako SPAM
IP: 193.84.207.–
Josef Kulhavý
~ Anonymní uživatel
2 příspěvky
1. 11. 2018   #5
-
0
-

Děkuji všem za nakopnutí k nápadu. Lze to vyřešit následujícím způsobem:

V hlavním dokumentu pouze zavolám test.php (pomocí jquery, bez obnovování):

<div id="sem"></div>

<script>

$(document).ready(function()
{
	$("#obnovit").load('test.php')
});

</script>

V test.php zavolám s dvacetisekundovým zpožděním stejný skript.

Zde pro přehlednost netahá data z databáze, ale čeká na číslo 5:

<?php

$cislo = mt_rand(1, 10);
echo "$cislo";
if ($cislo != 5)
{
?>
	<script>
		$(document).ready(function() {
			setTimeout (function() {
				$("#sem").load('test.php')
			}, 20000);
		});

	</script>
<?
}


Takže problém vyřešen: test.php získá data z databáze a v případě, že nedostane to, co je označeno jako definitivní, zavolá se test.php znovu.

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

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×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, 8 hostů

 

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