Zadejte hledaný výraz...

JQuery/AJAX – callback funkce

Petr-K
verified
rating uzivatele
13. 12. 2011 18:51:11
Zdravím, nedávno jsem tu našel odpovědi na mou otázku jQuery/AJAX, tak to zkusím ještě jednou.
Nevytvářím žádný složitý script, spíše si s tím jen tak ve volném čase hraji a narazil jsem na drobný zádrhel. Mám jednoduchý formulář, který je vygenerovaný ajaxem pro uložení defaultních hodnot, což není ani tak podstatné.
jQuery/AJAX:
Skript funguje dobře, vybrané hodnoty uloží do DB, dále je v selectech nastaví jako výchozí a zobrazí upravený formulář. Při druhém odeslání už ale AJAX neproběhně, proto jsem domníval, že když jednoduše dva stejné ajaxy do sebe vnořím tak bude problém vyřešen. Problém byl sice vyřešen ale jen pro druhé odeslání formuláře, u třetího odeslání opět nefunguje.
Jakým působem se řeší toto vícenásobné spuštění ajaxu po opětovném odeslání formuláře, který je vygenrován tím samým ajaxem?
Děkuji,
P.
13. 12. 2011 18:51:11
https://webtrh.cz/diskuse/jquery-ajax-callback-funkce/#reply707178
hm
verified
rating uzivatele
(20 hodnocení)
13. 12. 2011 19:04:15
nechapu, to musi jit porad jestli nekde ten event neodlinkovavas, bezne to pouzivam a samozrejme to funguje i pri druhem, tretim nebo treba stopadestaem odeslani...
13. 12. 2011 19:04:15
https://webtrh.cz/diskuse/jquery-ajax-callback-funkce/#reply707177
800XE
verified
rating uzivatele
(8 hodnocení)
13. 12. 2011 19:08:01
Funkci pro zpracování události submit jsi měl navěšenou na původní formulář, který(jestli to správně chápu) po odeslání přepisuješ novým, na který už ale žádný handler navěšený není. To se dá řešit pomocí delegování - události můžeš díky tzv. probublávání událostí odchytávat v některém z prvků, které jsou formuláři nadřazené(třeba v body):
13. 12. 2011 19:08:01
https://webtrh.cz/diskuse/jquery-ajax-callback-funkce/#reply707176
Petr-K
verified
rating uzivatele
14. 12. 2011 00:14:32
Aleš Jiříček: nevím, prostě mi tato verze nefunguje, ale nevadí, už to mám... :)
800XE:
Tak jsem si s tím ještě malinko hrál a přesto, že se mi tvůj návrh nepovedlo rozběhat - nevím proč - jsem problém vyřešil.
Použil jsem metodu live() a vůbec jsem nemusel další ajax vnořit. Myslíš, že je toto dobré řešení nebo by s tím mohl být ve specifických situacích nějaký problém?
14. 12. 2011 00:14:32
https://webtrh.cz/diskuse/jquery-ajax-callback-funkce/#reply707175
800XE
verified
rating uzivatele
(8 hodnocení)
14. 12. 2011 01:39:41
Tak jsem si s tím ještě malinko hrál a přesto, že se mi tvůj návrh nepovedlo rozběhat - nevím proč - jsem problém vyřešil.
Použil jsi v podstatě to samé řešení, co jsem navrhoval já :-) Akorát pro starou verzi jQuery, proto jsi taky mojí variantu nerozběhal - ta ti pojede od verze 1.7 ;-).
Myslíš, že je toto dobré řešení nebo by s tím mohl být ve specifických situacích nějaký problém?
Jediný problém s live nastává, když se nabinduje velké množství prvků, pak to může mít celkem znatelný dopad na výkon. To ale není tenhle případ.
14. 12. 2011 01:39:41
https://webtrh.cz/diskuse/jquery-ajax-callback-funkce/#reply707174
tom11111
verified
rating uzivatele
14. 12. 2011 01:51:21
Krátká odpověď: live() bylo do JQuery zabudováno přesně pro tento případ. Tj. alaxová odpověď vrací novou část html kódu, která se vloží do (nebo přepíše část) původní stránky.
Pravdou je, že sami autoři už její použití nedoporučují (možná časová náročnost, nemožnost řetězení volání funkcí, ...) a místo toho se nabízí delegování: http://jupiterjs.com/news/why-you-should-never-use-jquery-live
EDIT: 800XE byl rychlejší :-)
14. 12. 2011 01:51:21
https://webtrh.cz/diskuse/jquery-ajax-callback-funkce/#reply707173
Petr-K
verified
rating uzivatele
14. 12. 2011 10:51:25
Tak vám děkuji za vysvětlení.
A jdu ještě ozkoušet novější verzi jQeury.
Mejte se radostně a báječně!
14. 12. 2011 10:51:25
https://webtrh.cz/diskuse/jquery-ajax-callback-funkce/#reply707172
Pro odpověď se přihlašte.
Přihlásit