ugrás a tartalomhoz

setinterval gondok

nyakas · 2012. Ápr. 10. (K), 01.00
Adott az alábbi kód, amiben a setInterval csak egyszer hajtódik végre:

<head>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
       
       $(document).ready(function(){
   			setInterval($.post("iro.php",  {i1: 5}), 4000);
			
 		});</script> 
		 
		 
		 </head>

<body>

<?php
print("CSŐ!");
?>

</body>
a $.post jquery parancsban ez hívódik meg:
<?php
$phpVar = $_POST["i1"];
$f = fopen("textfile.txt", "a");
	
	fwrite($f, date("d/m/y : H:i:s", time()) . " " . $phpVar . "\n" ); 
	
	fclose($f);
?>
A jquery tökéletesen működik, az iro.php hozzá is fűzi a dolgot a textfile.txt-hez, de azonban csak egyszer, tehát nem fut le egynél többször a setinterval. Valakinek valami ötlete?
Mondjuk a kimeneti fájlban 2 órával korábbi időpontot jelez, de gondolom ez nem jelentheti a gond forrását. Köszönöm előre is. További szép napot! :)
 
1

callback

Poetro · 2012. Ápr. 10. (K), 06.22
A setInterval egy függvényt vár első paraméternek, de te a $.post visszatérési értékét adod át neki első paraméternek. Átfogalmazva: neked egy függvény referenciát kell átadnod a setInterval-nak, de te egy függvény futásának eredményét adod vissza. És mivel nem egy függvényt adsz át a setInterval-nak, ezért az nem is fog meghívódni többször. Ami a te általad felírt kódban történik:
  • Meghívód a $.post függvényt a "iro.php" és {i1: 5} paraméterekkel.
  • Átadod a $.post("iro.php", {i1: 5}) futásának az eredményét a setInterval-nak.
  • Amennyiben az egy függvény, akkor az 4 másodpercenként lefut.


Hogyan lehet átadni egy függvényt paraméterként egy másik függvénynek? Többek között erről is olvashatsz JavaScript függvények című cikkemben, itt a Weblaboron.
2

setInterval($.post("iro.php",

Karvaly84 · 2012. Ápr. 10. (K), 16.02

setInterval($.post("iro.php",  {i1: 5}), 4000)
helyett

setInterval(function() {
    $.post("iro.php",  {i1: 5});
}, 4000)