payload se mi odešle v 0.9.1, ale už ne v 0.9.2
- ondrique
- Člen | 16
Ahoj,
používám ui sortable a posílám si do presenteru v poli nové pořadí, tam to zpracuju a odesílám payload, aby se mi to taky změnilo ve skrytém inputu ve formuláři.
Kód je následující:
<script>
$(function() {
$("#sortable").sortable({
placeholder: 'highlight',
update: function() {
var listOrder = $(this).sortable("serialize");
$.post('<?php echo $presenter->link("Library:reorder")?>', listOrder, function(payload){
if (payload.images) {
$('[name=images]').val(payload.images);
}
});
}
});
$("#sortable").disableSelection();
});
</script>
<?php
public function actionReorder()
{
$session = Environment::getSession();
$namespace = $session->getNamespace('imagesSelected');
$post = $this->presenter->request->post;
$namespace['line'] = implode(',',$post['item']);
$this->payload->images = $namespace['line'];
$this->terminate();
}
?>
Aktualizoval jsem si Nette z 0.9.1 na 0.9.2 a kód mi přestal fungovat (payload se z presenteru zřejmě neodešle). Kde je chybka?
Díky za radu!
Editoval ondrique (19. 11. 2009 15:22)
- Honza Kuchař
- Člen | 1662
https://api.nette.org/…ter.php.html#692
Pokud zavoláš terminate() skript se ukončí. Pokud chceš odeslat výstup, musíš mu předat response. Případně ho nechat doběhnout…
- Honza Kuchař
- Člen | 1662
Jee, vidíš, to se mi teď bude hodit. Nevěděl jsem, že nějaká taková metoda je. (Nette se teď mění hodně rychle, až skoro k nepoznání)
Editoval honzakuchar (19. 11. 2009 22:33)
- David Grudl
- Nette Core | 8228
Zavolat $this->sendPayload()
je nejjistější způsob, sice
terminate()
by mělo fungovat, ale nejspíš je tam chybka.