ajaxově upravit šablonu a po časové prodlevě opět

vlkodlak
Člen | 175
+
0
-

zdravím pánové,

mám šablonu, stlačím tlačítko a chci předat konkrétní informaci a za patnáct vteřin jinou a zobrazím na místě první. funkce „sleep(15);“ jsem použil jen symbolický v realu tam proběhne kopírovaní dat na server a údržba dat

layout.latte

...
<body>

...
<a type="submit" class="btn btn-success ajax" n:href="zobrazinfo!" id="zobrazinfo">nacti data</a>
...
{snippet ZdeMojeData}
	{$totoZobraz}
{/snippet}
...
</body>

HomepagePresenter.php

...
   public function handleZobrazInfo(): void
   {
      if ($this->isAjax())
      {
		 $this->teplate->totoZobraz= 'Dnes je XY datum a bude zima';
	 	 $this->invalidateControl('ZdeMojeData');

		sleep(15);

		 $this->teplate->totoZobraz= '...ale brzy bude opet leto';
	 	 $this->invalidateControl('ZdeMojeData');
      }
   }
...
Polki
Člen | 553
+
+1
-

Tohle není odpovědnost serveru. Ten ti neudrží spojení a nebude ti překreslovat stránku. Server nikdy nedělá dotaz na klienta. Vždy klient na server.

Doporučuju udělat si v JavaScriptu funkci, která zjistí, že se kliklo na tlačítko #zobrazinfo a následně za 15 sekund po této události udělá ajax request na server na nová data pomocí $.nette.ajax() například.

jiri.pudil
Nette Blogger | 1032
+
+1
-

Případně pokud chceš mezi klientem a serverem držet dlouhodobější spojení a posílat si data tam a/nebo zpátky, můžeš použít např. WebSockets (obousměrné) nebo server-sent events (jednosměrné server → klient).