po ajaxovem volani redrawControl nevykona javascript

- blueticket
 - Člen | 41
 
Zdravim vas,
nevite mi nekdo poradit? Mam definovan snippet (zkousel jsem uz vsechno definoval jsem ho v control-u nebo v layoutu ktery control inicializuje), ktery potrebuji ajaxove prekreslit po akci ProcessOrder v komponente. Pri debugu se novy obsah snippetu prenese spravne z presenteru a nachazi se v response. Nevykona se mi vsak nize uvedeny javascript a nezobrazi mi alert. Nevite proc? Nemam v kodu zadny Javascript error ani nic podobneho.
latte kod:
{snippet notifyAlert}
	{if $flashes}
		<script type="text/javascript">
			{foreach $flashes as $flash}
				alert({$flash->message});
			{/foreach}
		</script>
	{/if}
{/snippet}
Kod z komponenty (zkousel jsem i variant $this->flashMessage a $this->redrawControl):
    public function handleProcessOrder($cart_nr) {
        $cart_nr = $this->getPresenter()->getHttpRequest()->getQuery('cart_nr');
        $this->database->query("UPDATE sma_document_items_tmp SET displayed=1 WHERE cart_nr=? AND displayed=0", $cart_nr);
        $this->presenter->flashMessage($this->presenter->translate("Objednávka odoslaná"));
        $this->presenter->redrawControl("notifyAlert");
    }
Odpoved, kterou dostanu z chrome Network debuggeru:
{"snippets":{"snippet--notifyAlert":"<script type=\"text/javascript\">\n                        alert(\"Objednávka odoslaná\");\n                    </script>\n"}}
Editoval blueticket (15. 3. 2018 9:34)

- Ondřej Kubíček
 - Člen | 494
 
tak to je jasné, ten js se nespustí, nevím jak řešíš ajax, ale obecně bys to měl mít nějak takhle, poslat si tu message v payloadu a pak v successu spustit alert
$.ajax({
	success: function(payload){
		if (payload.message != null){
			alert(payload.message);
		}
	}
});
				
- blueticket
 - Člen | 41
 
Jo to jsme delal prvne. Pouzivam nette.ajax ale v tomhle se mi zas nevykona success cast :(. Nevim, jestli je dulezite, ze volani probiha z komponenty. V handleru komponenty pak pouzivam pro naplneni payload-u tohle:
    $this->presenter->payload->message = $this->presenter->translate("Objednávka odoslaná");
    $this->presenter->sendPayload();
        $('body').delegate('#order_btn', 'click', function () {
            $.nette.ajax({
                type: 'GET',
                dataType: 'jsonp',
                url: {link processOrder!}, //"{!$print_address}",
                data: {
                    cart_nr: {$cart_nr}
                },
                success: function (payload) {
                    alert(payload.message);
                }
            });
            //window.location.href = "{!$print_address}";
        });
				
- blueticket
 - Člen | 41
 
takze super. Ondrej diky, mel jsem tam chybu (i kdyz v celku netusim proc) a namisto dataType: ‚jsonp‘ jsem dal dataType: ‚json‘ a pak se vse rozbehlo tak jak melo.