jquery & volani ajaxu s get/post parametrem

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

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
+
0
-

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
+
0
-

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
+
0
-
<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
+
0
-

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
+
0
-

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).