Jak udělat, aby Ajax aktualizoval pouze část stránky
- davez
- Člen | 60
Ahoj,
začínám v Nette s Ajaxem a potřebuji, aby se mi překreslil pouze kus
stránky.
Mám to v šabloně nějak takto:
Nějaký HTML kód…
potom:
{snippet payments}
// tabulka a do ní výpis proměnných
// ...
<a class="ajax" n:href="update!">update</a>
{/snippet}
V presenteru:
nastavím proměnné, které vypisuji v tabulce v snippetu a
provedu redraw
public function handleUpdate() {
$this->template->prize_czk = '27';
$this->template->price_eur = '1';
$this->redrawControl('payments');
}
Po kliknutí na update se mi do URL přidá ‚?do=update‘ a aktualizuje se
celá stránka, ne pouze snippet.
Můžete mi prosím poradit, jak dosáhnout toho, aby se znovu načetl pouze
snippet?
- davez
- Člen | 60
Díky, trochu jsem pokročil. Nevolal jsem $.nette.init();
Teď to nic do URL negeneruje, když se podívám v Chromu do komunikace, tak
ajaxový požadavek se odešle, ale stále se mi nic nepřekreslí.
Udělal jsem si teď ilustrativní případ. Zkouším to pouze takto:
šablona:
{snippet snipTest}
{$test}
<a class="ajax" n:href="updateIt!">update</a>
{/snippet}
presenter:
public function handleUpdateIt() {
$this->template->test = "AJAX FUNGUJE";
$this->invalidateControl('snipTest');
}
Defaultně je proměnná test nastavená na „Test“.
Používám invalidateControl, protože mám Nette 2.0, a dočetl jsem se, že
tam se ještě redraw nepoužíval.