ajaxově upravit šablonu a po časové prodlevě opět
- vlkodlak
- Člen | 175
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
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
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).