POST požadavek z AJAX na handle
- iskejp
- Člen | 41
Ahoj,
prosím o pomoc s propojení AJAXového požadavku z JQuery do handle v prezenteru. Našel jsem nějaké řešení, dokonce toho co přesně potřebuji, ale většinou šlo o věci staré alespoň 2 roky a nebo se řešení změnilo na odeslání GET.
Zkouším poslat z tohoto JavaScriptu:
<script>
...
$.ajax({
type: 'POST',
url: {link sort!},
data: sortItem,
error: function(){
alert("Theres an error with AJAX.");
}
});
</script>
A rád bych toto odchytil v resenteru:
<?php
/**
* Sort article by order. Using JQuery.
*/
public function handleSort($item) {
Nette\Diagnostics\Debugger::barDump($this->request); //post je prázdný
Nette\Diagnostics\Debugger::barDump($_POST); //prázdné pole
$list = $this->request->post;
$this->articleRepository->sortArticle($list);
}
?>
Pokud zadán do adresního řádku správně adresu s do=sort, tak se metoda zavolá a snaží se cosi udělat. Bohužel, při odeslání z JavaScriptu Firebug ukazuje volání POST požadavku s hodnotami, ale metoda není vůbec volána. Jakmile vyměním POST za GET ve skriptu, tak se funkce zavolá.
Jak tedy poslat POST požadavek do presenteru? Díky moc za pomoc.
- Etch
- Člen | 403
To by mělo fungovat zcela normálně. Běžně používám cca následující
$('#sort tbody').sortable({
update: function(e, ui){
$.nette.ajax({
type: 'POST',
url: $('#sort').data('update-method'),
data: {'order': $(this).sortable('toArray')}
});
}
});
v presenteru by se to pak mělo dát vytáhnout nejjednodušeji asi přes:
$this->context->httpRequest->getPost('order'); // Nezaručuji!!! Já to tahám až v komponentě.
Editoval Etch (20. 2. 2014 1:26)
- David Matějka
- Moderator | 6445
jakou pouzivas verzi nette? zkousel jsem tvuj priklad a fungoval mi ok