Ako v Nette Ajax vložiť JavaScript premennú ako parameter pre {link}?

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

Zdravím,
hľadal som, no nenašiel som nikde, ako by sa dalo do ajaxového kódu vložiť ako parameter javascriptová premenná. Tu https://forum.nette.org/…ic-nepripise#… sa píše, ako vytvoriť {link}, a niekde som našiel aj niečo takéto:

<script>
$.nette.ajax({
    url: {link Homepage:default 'parameter' => 'hodnota'},
    type: 'get'
});
</script>

Ja by som potreboval spraviť niečo takéto:

<script>
var value = "hodnota";

$.nette.ajax({
    url: {link Homepage:default 'parameter' => value},
    type: 'get'
});
</script>

Teda načítať ten parameter z javascriptovskej premennej, dá sa niečo také spraviť? Sedím nad tým už dobrú hodinu a stále som na nič neprišiel…

Felix
Nette Core | 1195
+
0
-

Takhle to nefunguje. Prasacka verze je toto:

var value = "x";
"{link Homepage:default}?parameter=" + value
enumag
Člen | 2118
+
0
-

Tohle je poměrně častý problém, dobré univerzální řešení jsem ještě neviděl.

Majkl578
Moderator | 1364
+
0
-

enumag napsal(a):

dobré univerzální řešení jsem ještě neviděl.

Já ano:

$.nette.ajax({
    type: 'get',
    url: {link Homepage:default},
    data: {
        parametr: hodnota
    }
});
enumag
Člen | 2118
+
0
-

@Majkl578: To ale nebude fungovat pokud ten parametr bude součástí URL a nebude za otazníkem. V takovém případě ti nematchne routa a v extrémním případě ti může matchnout nějaká routa kterou nechceš. Samozřejmě se routy dají napsat tak, aby s tím počítaly.

Editoval enumag (19. 1. 2013 1:10)

Majkl578
Moderator | 1364
+
0
-

Pravda, to jsem jaksi přehlédl, většinou to totiž používám právě s parametry za otazníkem.
Pak by asi bylo možné to, co zmiňuješ – napsat si routu, která bude žrát URL s parametrem v path i v query (základní část by samozřejmě kvůli diferenciaci rout musela být vždy stejná), kde ta 2. by byla třeba jednosměrka. U AJAXového requestu by dotaz na nekanonickou URL nevadil.

pseudonym
Člen | 57
+
0
-

Felix napsal(a):

Takhle to nefunguje. Prasacka verze je toto:

var value = "x";
"{link Homepage:default}?parameter=" + value

Ďakujem, tento spôsob funguje.

JakubJarabica
Gold Partner | 184
+
0
-

Prečo nenecháte tu URL vygenerovať aj s parametrom Nette? Nie je tu spomenutý aktuálny use case, ale kedže to je parametrizované, ta URL by mohla byť v hrefe alebo data-* atribúte nejakého relevantného HTML tagu a JS by si ju ťahal automaticky. Tak mi to zatiaľ vždy fungovalo.

enumag
Člen | 2118
+
0
-

@JAM3SoN: To je sice funkční a mnohdy i použitelné (kromě případů kdy parametr vyplňuje uživatel do inputu), ale generuješ spoustu odkazů z nichž se ve výsledku využije často pouze jeden. Což má tu zásadní vadu, že generování odkazů je drahé (mám pocit že je to v tuto chvíli hlavní zabiják výkonu Nette).