nette.ajax zavolání handle v komponentě, nepřevezme proměnou

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

Zdar, mám v UI\Control formulář ze kterého po výběru selectu chci vzít data pomocí $.nette.ajax níže, bohužel se do handle nepřevezme žádná hodnota. Pokud použiji klasicky <a n:href=„setAta!, 6“>odkaz na handle</a> tak vše funguje.

$(function(){
    $('select[name=AircraftId]').change(function () {
        $.nette.ajax({
            url: {link setAta!},
            data: {
                'valueId': $('select[name=AircraftId]').val(),
            }
        });


    });
});

Editoval breeta (20. 9. 2017 9:35)

CZechBoY
Člen | 3608
+
0
-

Nejspíš se ten parametr nejmenuje valueId, ale nějaký mojekomponenta-valueId.

breeta
Člen | 68
+
-2
-

Nakonec jsem to vyřešil takhle v handleSetAta:

$httpRequest=  $this->getPresenter()->getHttpRequest();
$valueId = $httpRequest->getQuery('valueId');
CZechBoY
Člen | 3608
+
0
-

To už bych si radši vytáhl parametr s action metody v presenteru a do komponenty ho docpal nějak jinak.
Proč nechceš použít framework, když už ho používáš?

breeta
Člen | 68
+
0
-

Pokud vyhodím z getHttpRequest() getUrl tak je: add?do=faultForm-setAta&valueId=6

Jak to tedy převzít líp když handleSetAta($valeId) proměnou nepřevezme?

Pavel Kravčík
Člen | 1195
+
+3
-
?do=faultForm-setAta&valueId=6

Z toho to jde docela hezky vidět ne? faultForm-setAta VS valueId. Ten parametr by se měl jmenovat faultForm-valueId, jak naznačoval @CZechBoY dvakrát.

Buď to tam dopíšeš ručně nebo se dá využít $control->getParameterId('valueId') což za Tebe tu cestu doplní i když bude ta komponenta několikrát zanořená.

Editoval Pavel Kravčík (20. 9. 2017 13:36)

breeta
Člen | 68
+
+1
-

Díky za nakopnutí:

$.nette.ajax({
            url: {link setAta!},
            data: {
                {$control->getParameterId('valueId')}: $('select[name=AircraftId]').val(),
            }
        });