Vlastní data v ajax response
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.

- wise
 - Člen | 161
 
Ahoj,
při odeslání formuláře dále pracuji nějakým způsobem se stránkou:
<script>
$(document).on("click", "form.ajax :submit", function (event) {
	if($(this).ajaxSubmit()) {
		// do something
	}
});
</script>
po odeslání formuláře v submitu provedu určité úpravy a invaliduju snippety.
- Jako response mi to vrátí snippets a state. Jakým způsobem je možné přidat vlastní data? (V případě sendPayload(), jak zajistím, aby se mi odeslalo snippets?)
 - je nějaká možnost jak odchytit chybové stavy? (404, 500,.., popř. jakým způsobem toto řešíte?
 
Díky moc.
Editoval wise (19. 9. 2012 11:26)

- Vojtěch Dobeš
 - Gold Partner | 1316
 
Ad 1) lze přidávat libovolná data do objektu
$this->payload.
Např.:
$this->payload->foo = $bar;
				
- Vojtěch Dobeš
 - Gold Partner | 1316
 
Ad 2) jQueriovské volání $.ajax vrací Deferred objekt, na
němž lze registrovat callbacky pro zpracování chybové odpovědi metodou
fail. Viz dokumentace jQuery.

- Vojtěch Dobeš
 - Gold Partner | 1316
 
Při sendPayload() se pošlou, protože jsou samy přidávány
do payloadu.

- wise
 - Člen | 161
 
ve zpracování formuláře mám:
<?php
$this->presenter->flashMessage('Some message', 'success');
$this->presenter->payload->foo = "bar";
$this->presenter->invalidateControl('users');
$this->presenter->sendPayload();
?>
co dělám špatně, že response je:
<script>
{"foo":"bar"}
</script>
?

- Vojtěch Dobeš
 - Gold Partner | 1316
 
Hm, nebyl jsem přesný. Odesíláš totiž payload dřív, než se snippety zpracovávají… takže tam sendPayload vůbec nedávej. Nette ho pošle samo.