Možnosti vyvolání handle z javascriptu
- Phalanx
- Člen | 310
Chlapi, prosím Vás – když volám funkci get z externího souboru, tak se mě správně zavolá handle, ale nic dalšího po tom řádku kódu v js funkci nevykoná (hlásí chybu missing : after property id).
Pokud mám script přímo v latte šabloně, pak se mi nezavolá handle, ale zbývající kód se provede bez problémů.
<script>
$.get({link employeeDelete!});
</script>
Poradil by mi někdo prosím možná řešení? Mockrát děkuji
- Ot@s
- Backer | 476
To co píšeš mi moc nedává smysl (resp. není se čeho chytit). V ukázce ale chybí zabalení kódu do ready-konstrukce (tj. spuštění JS počká na načtení kompletního DOMu stránky). Možná, že to tam máš, fakt nevím…
- Phalanx
- Člen | 310
Mám to celé ve funkci $(„.ajax“).live(„click“, function (event) {…
Už jsem pochopil první chybu – v souboru latte se mi ten odkaz přeložil, takže ta funkce get ani fungovat nemohla. Když jsem mezi složené závorky přidal mezery tak se handle volá stejně jako z externího js souboru.
<script>
$.get({ link employeeDelete! });
alert('tu');
</script>
Jde mi o to, že když zavolám handleEmployeeDelete() v presenteru, nezavolá se zbytek z mojí funkce. Tzn. alert už se neprovede. Pokud tam nemám funkci get() tak se mi alert zobrazí.
edit:
i když je ten handle prázdný, tak skript skončí s chybou. Nemohlo by to
být kvůli chybné syntaxi js (missing : after property id) jak jsem psal
v prvním příspěvku?
Editoval Phalanx (21. 2. 2012 17:38)
- OK3
- Člen | 91
Koukni na tohle https://componette.org/search/?…
Pokud máš ten skript v externím souboru (.js?), tak je jasné, že ti tam latte makro nemůže nic vypsat. Buď ten skript přesuň do těla nějaké šablony, nebo si to zajaxuj podle návodu výše.
Navíc koukám, že tam máš { link employeeDelete! } – odsazování od závorek se používá právě v tom opačnym případě, když nechceš, aby se ti syntax JS vyhodnocovala jako latte makra.
Editoval OK3 (21. 2. 2012 17:59)
- Phalanx
- Člen | 310
jquery.nette.js v projektu mám vložené přes include.
Zkouším volat handle jak z externího js souboru tak i přímo z latte.
Z latte šablony se mi nezavolá handle když to mám bez mezer ⇒ {link
employeeDelete!}
zavolá se pouze pokud je s mezerami { link employeeDelete! } a to pak píše
chybu s javascriptem, takže se nevykoná další část kódu.
Jsem ztracený… Podle všech návodů tady na fóru by mělo být správně volat z latte šablony {link employeeDelete!}, ale mě se ten handle nezavolá.
Všude kde jsem hledal mají stejnou syntaxi
https://forum.nette.org/…jak-v-navodu
https://forum.nette.org/…-link-singal
- dcepelik
- Člen | 36
Ahoj,
použití odsazení { link
v tomto případě nedává smysl,
jak již psal OK3.
Pokoušel jsem se dopracovat k chybě, kterou popisuješ („missing : after property id“) a povedlo se mi to takto:
(První značka značka script
navíc, aby fungovalo
zvýrazňování zde na fóru.)
<script>
<script type="text/javascript" n:syntax="off">
$.get({link x!}, null, function() { alert('dokončeno')});
</script>
Víš určitě, že nemáš pro blok script
vypnuté Latte
pomocí n:syntax="off"
a že máš zaregistrovaný Latte filter?
(Tj. je to šablona, která je vázaná na některou akci Nette, nebo si ji
v kódu vytváříš sám?)
- Phalanx
- Člen | 310
dcepelik: Aha, takže latte filter musím mít vypnutý. Já prostě zkouším cestu, kterou to půjde správně a bohužel se mi to nedaří.
Mám tedy teď následující kód s chybou („missing : after property id“), což v praxi znamená, že se mi zavolá v pořádku handleEmployeeDelete (když si tam dám dump tak se vypíše správně), ale činnost javascriptu se bohužel zastaví kvůli tomu „missing : after property id“, takže se mi už alert(‚dokončeno‘) nevykoná :(
<script>
<script type="text/javascript" n:syntax="off">
$(".ajax").live("click", function (event) {
event.preventDefault();
// $.get(this.href); nefunkcni - pri vypsani alertem undefined
$.get({link employeeDelete!}, null, function() { alert('dokončeno')});
});
</script>
Editoval Phalanx (22. 2. 2012 6:31)
- Phalanx
- Člen | 310
přepsal jsem si ten $.get(this.href) na $.get($(this).parents(„a:first“).attr(‚href‘) a už to vrací správnou adresu …/employee/default/7?do=employeeDelete
Tím pádem odpadla chyba s missing : after property id a šlape to :) Mockrát děkuju všem za přispění.
Editoval Phalanx (22. 2. 2012 9:03)