Problem s AJAXem

- Dj_Oggy
 - Člen | 67
 
Zdravim, zacal jsem si hrat s AJAXem a narazil jsem na jisty problem.
Pouzivam knihovnu jquery, livequery a jquery.nette z fifteen prikladu.
Mam vytvorenou kontrolu pro vypisovani seznamu
{snippet actionlist}
		<table>
		  <tr>
		    <th>Datum</th>
		    <th>Název akce</th>
		    <th>Popis akce</th>
		  </tr>
		{foreach $items as $item}
		  <tr class="akce">
		    <td>{$item['day']}</td>
		    <td>{$item['name']}</td>
		    <td>{$item['desc']}</td>
		  </tr>
		  <tr id="akce{$iterator->getCounter()}info" class="info" >
		  	<td colspan="3" style="text-align: center;">rozsirene info</td>
		  </tr>
		{/foreach}
		</table>
<script type="text/javascript">
	var isVisible = false;
	$("tr.info").hide();
	$("tr.akce").livequery('click', function(event){
		if (isVisible) {
			$("#akce1info").fadeOut("fast");
			isVisible = false;
		} else {
			$("#akce1info").fadeIn("slow");
			isVisible = true;
		}
	});
</script>
{/snippet}
a v defaultu mam
{block #content}
@{control actionlist}
<a href="{link actionlist:refresh!}" id="refresh" class="ajax">Klikni</a>
{/block}
(pouzivam @layout.phtml).
Nyní v php controly mam tento kod
public function setData($data)
		{
			$this->data = $data;
		}
		public function render()
		{
			$template = $this->template;
			$template->setFile(dirname(__FILE__). '/ActionlistControl.phtml');
			$template->items = $this->data;
			$template->render();
		}
		public function handleRefresh()
		{
			if ($this->isAjax())
				$this->setData(array(
					array("id" => 0, "day" => 1, "name" => "newskolni game", "desc" => "for fun"),
					array("id" => 1, "day" => 2, "name" => "newskolni game2", "desc" => "for fun2")
								));
		}
a v php defaultu mam
protected function createComponentActionlist()
	{
		$actionList = new ActionlistControl();
		$actionList->setData(array(
			array("id" => 0, "day" => 1, "name" => "skolni game", "desc" => "for fun"),
			array("id" => 1, "day" => 2, "name" => "skolni game2", "desc" => "for fun2")
								));
		return $actionList;
	}
A nyni mam 2 hlavni problemy:
1, Pri pouziti zavinace se mi totalne rozhodi stranka, a to tak, ze snippet je uplne navrhu kodu stranky i pred head apod.
2, Pri kliknuti na „klikni“ odkaz bych chtel, aby se mi nacetla druha sada radku, ktere tam jsou definovane, ale porad se mi tam objevuje jedna a ta sama. Tipuju to na zivotni cyklus renderovani, kde mi asi neco uniklo.
Diky za rady.
Editoval Dj_Oggy (27. 8. 2009 18:27)

- Panda
 - Člen | 569
 
Zkusil bych toto:
@{block #content}
@{control actionlist}
<a href="{link actionlist:refresh!}" id="refresh" class="ajax">Klikni</a>
@{/block}
V layoutu zavináč ponechat.
Jinak jsem se taky trochu snažil odpovědět tématem Zavináčová magie v praxi.
Editoval Panda (27. 8. 2009 19:44)

- Dj_Oggy
 - Člen | 67
 
Tak nakonec jsem to zprovoznil.
Musel jsem v handleRefresh zrusit kontrolu isAjax(), protoze tahle
metoda neexistovala a proto server vracel kod 500 (prisel sem na to tak, ze jsem
zrusil ajaxovateni a ladenka uz sama rvala).
A nakonec toho handleRefresh jsem dal invalidovani a vse uz
funguje, jak ma.
Editoval Dj_Oggy (27. 8. 2009 20:44)