jquery & volani ajaxu s get/post parametrem
- Qwert
- Člen | 19
Ahoj,
uz nekolik dni se trapim s rozchozenim ajaxu prostrednictvim jquery ve strance.
Dostal jsem se do bodu, kdy mi vse probehne spravne az na to, ze to nepreda
parametr, ktery ziskavam v jquery (at uz get ci post). Marne hledam ve foru a
zkousim to ruzne modifikovat. Toto je vysek meho kodu. Urcite jde o banalitu,
ale nemuzu se pres to dostat. Poradi mi nekdo?
Diky predem …
vysek sablony:
<script>
function myCallback(payload) {
//toto vypisuje NULL a melo by vypisovat id!!! :)
alert(payload.ajax_number_id);
};
$(document).ready(function () {
$('tr.numbers_choice').click(function() {
//tento alert se mi vporadku vypise
alert($(this).attr("id"));
$.get({link add!}, { id: this.attr("id") }, function (payload) {
myCallback(payload);
});
});
});
</script>
vysek presenteru:
<?php
public function handleAdd()
{
$params = $this->getRequest()->getParams();
//$params = $this->getRequest()->getGet();
//$params = $this->getRequest()->getPost();
$this->payload->ajax_number_id = $params['id'];
$this->terminate();
}
}
?>
- nanuqcz
- Člen | 822
Ahoj, tohle bude fungovat, jen jestli používáš SimpleRouter (vygeneruje
URL /presenter/action/?do=add&id=1
)
$.get({link add!}, { id: this.attr("id") }, function (payload) {
zkus tohle (vygeneruje URL /presenter/action/1/?do=add
)
$.get({link add!, id => 1}, '', function (payload) {
Jestli tohle bude funguvat, budeš ještě muset vyřešit jak místo té
jedničky předáš ten parametr id
dynamicky.
Editoval xxxObiWan (5. 2. 2012 16:26)
- Qwert
- Člen | 19
xxxObiWan napsal(a):
Ahoj, tohle bude fungovat, jen jestli používáš SimpleRouter
$.get({link add!}, { id: this.attr("id") }, function (payload) {
Diky za odpoved. Pro tenhle konkretni presenter by mi SimpleRouter stacil,
ale jestli si spravne vykladam toto vlakno
https://forum.nette.org/…-mod-rewrite#…
(a omlouvam se, jestli jsem princip rout spravne nepojmul), lze pouzit pro
aplikaci jen jeden typ rout. To bych se zase nerad pripravil o hezka url.
zkus tohle
$.get({link add!, id => 1}, '', function (payload) {
Toto mi funguje.
Jestli tohle bude funguvat, budeš ještě muset vyřešit jak místo té jedničky předáš ten parametr
id
dynamicky.
Tzn budu muset nejak pomoci javascriptu replacovat parametr v url? Mohl bys mi pls jeste tuknout, jak toho elegantne a univerzalne docilit? Resi se tedy takto vsechny podobne pripady, kdy je nutne volat ajax s jquery ziskanym parametrem nebo je cela moje koncepce spatne?
Moc diky predem za odpovedi.
- Qwert
- Člen | 19
<script>
$(document).ready(function () {
$('tr.numbers_choice').click(function() {
var url = {link add!, id => '_id_replace_'};
$.get(url.replace('_id_replace_', this.attr("id")), function (data) {
myCallback(data);
});
});
});
</script>
Tak jsem to vyresil pres javascriptovej replace a uz mi to funguje. Diky za pomoc. Je toto tedy optimalni reseni podobnych pripadu?
Editoval Qwert (5. 2. 2012 17:19)
- nanuqcz
- Člen | 822
A ty to $id
neznáš při vykreslování? (podle mě ho znáš,
když ho bereš z id
atributu HTML tagu <tr>) Že bys ho tam
vložil přes PHP (Latte) v šabloně
$.get({link add!, id => $id}, '', function (payload) {
Anebo, pokud to ID neznáš dopředu, protože ho třeba uživatel vyplňuje přes formulář, pak by takový požadavek měl jít přes POST a k tomu je tu doplňek
- Qwert
- Člen | 19
Jasne, v php ty idcka radek znam. To asi bude prave to, ze jsem nezvolil pro to co potrebuju nejvhodnejsi koncepci. Hodilo by se ten ajax volat primo pres udalost na elementu, kde muzu id pripravit uz v sablone, ale na to jsem zadny vhodny priklad neobjevil, z dokumentace nevycetl (pomoci toho jsem dosahl jen obsluhovani snippetu, ale ten jsem pro svou potrebu ohnout nedokazal).