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.