AJAX, překreslit snippet – co je špatně
- futuretux
- Člen | 24
Ahoj,
pokusil jsem se rozchodit AJAX v Nette a moc se mi to nedaří. Je to asi jen
začátečnické nepochopení, ale byl bych rád, kdyby mi to někdo
vysvětlil.
1) Použil jsem jquery.nette.js z examplu Fifteen
2) @layout.latte
...
<a n:href="show!" class="ajax">Show!</a>
{snippet mbox}{$message}{/snippet}
...
3) XxxPresenter.php
public function renderDefault() {
$this->template->message = 'Nacteno normalne';
}
public function handleShow() {
if ($this->isAjax()) {
$this->template->message = 'Nacteno ajaxem';
$this->invalidateControl('mbox');
}
}
A co se stane. AJAX požadavek přijde do handleShow(), vleze do toho if-u – otestováno fopen(…) a vytvořením souboru v té části kódu. Ale nic se nevykreslí.
Asi jsem něco nepochopil správně; příklad fifteen je moc komplexní, dokumentace není moc sdílná.
A jestě bonusový dotaz – pokud bych pouzil $this->payload->xyz = ‚neco‘, tak jak bych mohl na straně šablony přijmout ty payload data? To jsem taky nepobral.
Díky
- futuretux
- Člen | 24
Tak se omlouvám za unáhlený dotaz, vůbec jsem nevěděl o této části „dokumentace“, odpověď jsem našel na https://doc.nette.org/…ication/ajax – a doslo mi, ze se pak vzdy vola ten render.
Ale ještě bych rád ponechal tu část dotazu na konci, tedy pokud budu posílat data pomocí $this->payload->xyz, tak jak je pak vydoluju na straně JS? Má na to nette taky nějakou cool zkratku?
- Ot@s
- Backer | 476
futuretux napsal(a):
Ale ještě bych rád ponechal tu část dotazu na konci, tedy pokud budu posílat data pomocí $this->payload->xyz, tak jak je pak vydoluju na straně JS? Má na to nette taky nějakou cool zkratku?
Payload na straně klienta je dostupná pouze uvnitř metody
$.nette.success
(jako parametr payload
).