AJAX handle bez reloadu stránky

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

Zdravím, mám problém, že se mi obnovuje stránka, když kliknu na link na metodu handle v presenteru, abych si dostal z DB data a aktualizoval snippet do popup okna. Zatím to funguje téměř dobře, že když kliknu na text ‚Upravit‘, tak se mi pomocí jQuery zobrazí popup okno, zavolá se metoda handle z presenteru, kde si přes ID získám data z DB, přepíšu si snippet a pak se stane to, co nechci, že se reloadne, kvůli tomu linku stránka, takže se mi to popup okno zase skryje.

HTML

{snippetArea userEditPopup}
	{include '../popup/userEdit.latte'}
{/snippetArea}

<ul>
	<li n:foreach="$uzivatele as $u">
		<a n:href="editUser! $u['id']"
			class="md-trigger popup-edit-user" data-modal="modal-user-edit">
				<i class="icon12 i-pencil gap-left0"></i>Upravit
		</a>
	</li>
</ul>

userEdit.latte

{snippet userEdit}
	...
{/snippet}

Presenter

<?php
public function handleEditUser($id)
{
	$this->uzivatel = $this->uzivatele->findUzivatel($id);
	$this->template->uzivatel = $this->uzivatel;

	if($this->isAjax()){
		$this->redrawControl('userEditPopup');
		$this->redrawControl('userEdit');
	}
}
?>

Pokud je možné jenom nějak zabránit tomu, aby se stránka kvůli linku ‚redirectovala‘, popř. změnit pouze html tag pro zavolání handle metody, tak by to bylo ideál, ale už jsem vyčerpal všechny mé schopnosti, abych to vyřešil. nette.ajax.js jsem zatím nepoužil, protože bych to rád vyřešil bez toho. Kdyby ale nebyla jiná možnost tak to přizpůsobím.

Díky moc za odpověď.

CZechBoY
Člen | 3608
+
+3
-

Pridej tridu ajax k odkazu

Johny12369
Člen | 21
+
0
-

To už jsem zkoušel, ale bez úspěchu, ikdyž includnu nette.ajax.js

Zuben45
Člen | 268
+
0
-

Johny12369 napsal(a):

To už jsem zkoušel, ale bez úspěchu, ikdyž includnu nette.ajax.js

spustil jsi ?

$(function () {
	$.nette.init();
});

a co konzole ? Nehlásí chyby ?

Johny12369
Člen | 21
+
0
-

Já jsem blbej… na to jsem zapomněl. Už se to dostalo dál, ale tentokrát mi zase nějak koliduje nette.ajax.js s jquery.nette.js, že mi to vyhodí chybu:

jquery.nette.js:26 Uncaught TypeError: jQuery.nette.updateSnippet is not a function

Když ten nette.ajax.js neincludnu a neinitiatnu, tak se tato chyba nevyhodí (jquery.nette.js mám includnutý). Když odeberu jquery.nette.js, tak popup jenom problikne a dál už se nic nestane, ani žádná chyba. (nette.ajax.js mám includnutý pod jquery.nette.js)

CZechBoY
Člen | 3608
+
0
-

jquery.nette.js je predchudce ne? co mas za verzi nette?

Johny12369
Člen | 21
+
0
-

Podle kódu by to sedělo, že je to předchůdce, ale pokud to neincludnu oboje, tak to popup okno jenom jednou problikne, a pak při klikání na zobrazí popup už se nic neděje. Chybu to žádnou nehlásí. Nette mám nejnovější 2.4, nette.ajax.js je v. 2.3.0. Třídu ajax už na odkazu mám.

Johny12369
Člen | 21
+
0
-

Už jsem to vyřešil. jquery.nette.js jsem smazal a to problikávání způsobovalo, že jsem víc zanořil tag snippet userEdit, protože javascript mi do divu přidával třídu na zobrazení popup okna a ve stejnou chvíli mi ajax aktualizoval snippet, takže se třída smazala. Díky všem za pomoc :)