AJAX Form – Nezavolá se onSuccess
- martin.loucka
- Člen | 9
Dobrý den,
nemohu v Nette přijít na to, proč se mi nezpracuje formulář odeslaný
pomocí AJAXu. Používám nette.ajax.js (vč. $.nette.init();
).
AJAX normálně funguje, odešlou se na správnou adresu i POST data, spustí
se handler, ten invaliduje část stránky, ta se pošle zpět a vloží se kam
má. Nicméně z nějakého důvodu se nezavolá odpovídající
onSuccess
metoda.
Naopak, pokud vypnu AJAX (resp. odeberu formuláři class ajax
)
a odešlu ten samý formulář, na tutéž stránku se odešlou stejná POST
data, handler se pochopitelně nespustí, ale onSuccess
metoda se
provede.
Podotýkám, že v handleru je jen
if($this->isAjax()) $this->invalidateControl("data");
, takže
by snad neměl ovlivnit další spouštění metod v životním cyklu.
Nemáte prosím tip, čím by to mohlo být? Podle čeho Nette volá tu metodu, pokud ne podle přijatých POST dat?
- Šaman
- Člen | 2666
Můžeš poslat ukázku? Co myslíš tím handlerem?
Když zpracovávám formulář, tak žádný handler explicitně nevytvářím,
pokud potřebuju překreslovat, tak v metodě onSuccess.
Nemůže se stát, že překreslíš formulář, tím ho vlastně resetuješ a
pak se samozřejmě onSuccess nezavolá, protože jeho odeslání není
success?
- martin.loucka
- Člen | 9
Tak vyřešeno. Mockrát díky za pošťouchnutí!
Problém byl v tom, že jsem si v tom snippetu překresloval i ten formulář. Vyřešil jsem to tak, že jsem upravil latte, aby byl formulář venku, vyhodil jsem metodu handle*() a invalidaci hodil přímo do metody onSuccess.