AJAX, překreslit snippet – co je špatně

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

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
+
0
-

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
+
0
-

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).