AJAX Form – Nezavolá se onSuccess

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

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
+
0
-

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
+
0
-

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.