ajax s setInterval s nette

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
wise
Člen | 161
+
0
-

Ahoj,

chtěl bych se zeptat je-li, popř. jak v nette toto možné udělat.

Každých 5 vteřin (setInterval) zavolat určitý handler $.post(„?do=…“, function()…v handleru načíst potřebné data a přímo tam invalidovat snippet. Resp. nevracet žádný jiný response než true.

Popř. jak by měl vypadat handler a daná fce?

Díky moc.

uestla
Backer | 796
+
0
-

… ?

wise
Člen | 161
+
0
-

Jaký payload mám poslat z handeru?

Dejme tomu, že v něm mám pouze:

<?php
$this->template->xx = "foo";
$this->invalidateControl("boo");
?>

Editoval wise (27. 6. 2011 1:16)

joe
Člen | 313
+
0
-

Pokud nechceš renderovat šablonu, tak výstup hned pošli.

$this->payload->foo = TRUE;
$this->sendPayload();
wise
Člen | 161
+
0
-

a pokud chci?

joe
Člen | 313
+
0
-

Pokud chceš, tak v tom signálu (handleXXX) jenom invaliduješ nějaký ten snippet, tak jak jsi napsal ve #3 příspěvku. To je v signálu. A pak bys ještě v action a render fázích měl zajistit, aby se ti neprováděly věci, které během AJAXu nechceš.
Je možné, že máš v render fázi znovu

$this->template->xx = "...";

A nedostává se ti do výstupu to, co tam dáváš v tom signálu (že si to přepisuješ).

uestla
Backer | 796
+
0
-

Pokud máš v šabloně snippet boo, tak už ti stačí jen zalinkovat výše odkazovaný javascript a volat v každém intervalu $.getJSON({link signal_presenteru!});, ve kterém se děje tebou uvedená věc (přiřazení do proměnné a následná invalidace) – natažení nového HTML do daného snippetu už obstará onen skript.

wise
Člen | 161
+
0
-

Tak byla chyba asi z mojí strany a to blbost, asi špatně pojmenovaný snippet. Ale jinak díky moc :-)