Redraw proběhně později než ajax „success“

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

Dobrý den,
trápím se tu s posloupností událostí při ajaxové funkci. Nejdříve chci ajaxově načíst data do modálního okna a až poté okno zobrazit.

Př:
jquery ajax

<script>
 ...
        $.nette.ajax({
            type: ...
            url: ...
            data: {
                ...
            },
           success: showModal()
        });
 ...
</script>

směruje na:

public function handle...() {
  $this->template->neco = $co_chci_zobrazit;
  $this->redrawControl('cileny-modal');
}

Bohužel v praxi to vypadá tak, že se modální okno otevře prázdné (bez dat) a až potom se snippet redrawne (a tím se modal schová porotže jeho výchozí nastavení je display none) s daty.

Nevíte čím to je případně jak zařídit, aby se data opravdu nejdříve načetla a „success“ proběhl až poté?

CZechBoY
Člen | 3608
+
+2
-

Třeba takhle:

$.nette.ext('moje-jmeno-extension', {
	init: function () {
		this.ext('snippets', true).after(function($snippet) {
			// zavoláno po přijmutí jakéhokoliv snippetu
		});
	}
};
JaxP
Člen | 62
+
0
-

Paráda, děkuji.

Je zde nějaké vysvětlení proč moje verze nefunguje? Není to tak, že „redraw“ je způsoben dalším scriptem, který se provádí odděleně (nebo-li, že ajaxový požadavek je „success“ ještě dřív než JS stihne překreslit okno?)?.

Více by se mi hodilo volat success ve stejném scriptu (např. kvůli předání proměnných, které funkcemi proplouvají)

Editoval JaxP (23. 8. 2016 16:13)

CZechBoY
Člen | 3608
+
0
-

Nejdřív se provede success, potom až se odstřelí další rozšíření.