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

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.

  1. 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?)
  2. 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
+
0
-

Ad 1) lze přidávat libovolná data do objektu $this->payload.

Např.:

$this->payload->foo = $bar;
Vojtěch Dobeš
Gold Partner | 1316
+
0
-

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.

wise
Člen | 161
+
0
-

Ad 1) měl jsem tam omylem „v případě sendResponse()“, myslel jsem samozřejmě sendPayload(). V případě, když pošlu response jako sendPayload, pošle se mi pouze to, co dám do payload. V takovém případě jsem se ptal, jak zajistím odeslání snippets pro invalidaci a popř. state?

Vojtěch Dobeš
Gold Partner | 1316
+
0
-

Při sendPayload() se pošlou, protože jsou samy přidávány do payloadu.

wise
Člen | 161
+
0
-

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

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.

wise
Člen | 161
+
0
-

Funguje, díky :)

Kdy se tedy zpracovávají snippety?

wise
Člen | 161
+
0
-

Díky