Nette 2.4 nefunguje jsCallback

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

Zdravim,

updatoval jsem na nette 2.4 a v jednom projektu, kde jsem vyuzival dependent select box podle tohoto navodu https://blog.nette.org/…-and-pure-js, zacalo nette hazet varovani „Including block jsCallbackSecond with content type HTML into incompatible type HTMLJS.“. Pri preskoceni varovani select nefunguje.

Mohl by mi nekdo prosim poradit jak to napravit?

McLel
Člen | 12
+
+3
-

Update:
Podle vseho je ve verzi 2.4 nutne mit u definice javascriptu tag <script>

{define #jsCallback}
<script>
    $('#{$control["selectForm"][$input]->htmlId}').on('change', function() {

        $.nette.ajax({
            type: 'POST',
            url: '{link {$link}!}',
            data: {
                'value': $(this).val(),
            }
        });
    });
</script>
{/define}

Je tu ale hned dalsi problem, konzole pise chybu jquery-3.0.0.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #„frm-selectForm-first“

Tedy místo „#frm-selectForm-first“ nette vytvoří #„frm-selectForm-first“

Jde to nejak opravit?

Edit:

Zatim jsem to vyresil takto:

var input = "#" + {$control["selectForm"][$input]->htmlId};
$(input).on('change', function() {

Ale pote hned nasledovala dalsi chyba:

jquery-3.0.0.min.js:4 POST http:// 127.0.0.1/test/www/%22/test/www/homepage/?do=firstChange%22 500 (Internal Server Error)

Tedy nesmyslna URL navic doplnena o „%22“

Reseni: oproti navodu je ve verzi 2.4 nutne odstranit uvozovky u URL

$.nette.ajax({
    type: 'POST',
    url: {link {$link}!},
    data: {
        'value': $(this).val(),
    }
});

Pote jiz konecne dependent select box opet funguje.

Editoval McLel (9. 7. 2016 16:38)

David Grudl
Nette Core | 8239
+
+2
-

Je to přesně jak píšeš, on vlastně ten původní příklad byl „špatně“, jenže v Latte 2.3 to prošlo a Latte 2.4 už řve.

Neměl bys chuť poslat PR do https://github.com/…th-ajax.texy

McLel
Člen | 12
+
0
-

Omlouvam se, ale git(hub) je pro me zatim spanelska vesnice :)

David Grudl
Nette Core | 8239
+
0
-

Zkusil jsem to opravit, můžeš prosím ověřit, že je to ok?

McLel
Člen | 12
+
+1
-

Ano,

$('#' + {$control["selectForm"][$input]->htmlId}).on('change', function() {

funguje

Diky moc!