Existuje jednoduchý příklad na AJAX, snippety, control a payload?

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
medhi
Generous Backer | 257
+
0
-

Ahoj,
plácám se tu s controlem, který by měl fungovat ajaxově. Bohužel nikde neexistuje jednoduchý příklad, ze kterého bych vše pochopil, nemohli byste jednoduchý napsat?

Mám jednoduchý control Browser, který by měl vypsat nějaké složky po kliknutí na složku by se mělo zase vypsat to co je v ní. Mělo by to běhat ajaxově.

Zatím jsem pochopil, že musím použít jquery.nette.js, odkazům dát class=„ajax“, ale už nemohu přijít na to, jak pracovat s proměnnou payload atd.

Díky

Editoval medhi (18. 2. 2010 12:23)

mkoubik
Člen | 728
+
0
-

Tomu IMHO odpovídá fifteen v oficiálních examples, nebo potřebuješ něco co tam neni? S payloadem nemusíš pracovat vůbec: na serveru se vytváří automaticky, a jquery.nette.js ho automaticky nacpe do DOMu.

medhi
Generous Backer | 257
+
0
-

Fifteen jsem studoval, ale je tam mnoho dalších věcí, ve kterých se mi ztratí ta podstata. Mám to v nějaké základní formě rozběhnuté, když kliknu na odkaz složky, tak se zobrazí kolečko a ajax vrátí toto:

payload is null
success(Object { name="payload"})jquery.nette.js (řádek 22)
b()jquery.min.js (řádek 124)
abort(Object { name="q"})jquery.min.js (řádek 129)
[Break on this error] if (payload.redirect) {
...

V presenteru, kam dávám control mám toto:

<?php
	function createComponentBrowser()
	{
		$browser = new Browser($xxx);
		return $browser;
	}
?>

control vypadá takto:

<?php
class Browser extends Control
{


	public function __construct($serverData)
	{
		parent::__construct();
		...
	}

	public function render()
	{
		$template = $this->template;
		$template->setFile(dirname(__FILE__) . '/Browser.phtml');
		...
		$template->files = $files;

		$template->render();
	}


	public function handleOpenDir($dir)
	{
		$this->path .= '/'.$dir;
		if ($this->presenter->isAjax())
		{
			$this->invalidateControl('browser');
			$this->presenter->terminate();
		}
	}

}
?>
Panda
Člen | 569
+
0
-

Jednoduchý příklad na AJAX jsem psal, konkrétně to bylo zaměřené na forumláře + jednoduché snippety: http://jan.smitka.org/…ajaxdemo.zip. Snad Ti to pomůže…

Ola
Člen | 385
+
0
-

Chybku máš v tom $this->presenter->terminate() – smaž to a mělo by to jet.

Honza Marek
Člen | 1664
+
0
-

medhi napsal(a):

Panda: Díky, tvůj příklad vypadá jednoduše a pochopitelně, ale funguje na jquery.nette.js nějakého staršího data než je ta aktuální, kterou lze stáhnout zde v dokumentaci. A s tou se asi pracuje trošku jinak? Nakopne mě někdo?

https://componette.org/search/?… Tohle jsi přehlídnul nebo je to blbě napsaný?

Jinak IMHO fifteen bych považoval spíš jako příklad jak s ajaxem pracovat pokročile, ne jako ukázku základního ajaxování.

medhi
Generous Backer | 257
+
0
-

Ola: Ano, to je ono, děkuji!