AJAX handle bez reloadu stránky
- Johny12369
- Člen | 21
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ěď.
- Johny12369
- Člen | 21
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)
- Johny12369
- Člen | 21
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
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 :)