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

Zdarec řeším teď jednu funkci a potřeboval bych ji volat ajaxově. O co jde: po kliknutí na odkaz volám onchange funkci v javascriptu a v te pak potřebuju zpracovat funkci v php, které potřebuju předat proměnnou. Jelikož ještě nevím jak přesně handlovat v nette řeším to teď strašně prasácky a chtěl bych to už řešit konečně normálně i v budoucnu. Proto sem nahodím jak to řeším a kdyby mě někdo ochotný nasměroval byl bych mu vděčný.
Takže javascript:

<script>
  function button_onclick(){
	var user_id = {$user};
	$.post('{$baseUri}scripts/connect.php', {id:user_id});
	alert('Nějaká potvrzující hláška že vše je ok.')
  }
</script>

řekněme že bych volal default presenter a v tom bych chtěl handlovat tohleto kliknutí. Jak mám nastavit url v javascriptu a jak mám napsat tu handle funkci a zjistit tu proměnnou $_POST[‚id‘]?

toka
Člen | 253
+
0
-

Ale jen takový náznak :-)

// V Presenteru
...
public function handleNazevHandle($value) {
...
}
...
function doSmth(value) {
  $.get("?do=nazevHandle&presenter=Modul%3APresenter", {"value": value}, function(data) {
  ...
  }, "html");
}

A pokud ti jde o to $user, to si v tom handle krásně získáš přes Environment::getUser();.

redhead
Člen | 1313
+
0
-

Nad tvarem URL bys v nette neměl vůbec přemýšlet, pokud chceš odkazovat na nějakou URL, uvedeš to všude v šabloně (i v JS) úplně stejně:

<a href="{nazevHandle!}">abc</a>
$.get({nazevHandle!}, ....);
pjoter
Člen | 118
+
0
-
<script>
function doSmth(value) {
  $.get("?do=nazevHandle&presenter=Front_DefaultPresenter", {"value": value}, "html");
}
</script>

Takhle pokud mám Modul Front nebo tam bylo to %3A schvalne ? to function(data) tam být předpokládám nemusí a nakonec ten user není user z autentizace ale je to úplně jiná proměnná ale jak získat GET proměnnou si najdu v dokumentaci díky

Etch
Člen | 403
+
0
-

redhead napsal(a):

Nad tvarem URL bys v nette neměl vůbec přemýšlet, pokud chceš odkazovat na nějakou URL, uvedeš to všude v šabloně (i v JS) úplně stejně:

<a href="{nazevHandle!}">abc</a>
$.get({nazevHandle!}, ....);

Jen mírný OT. Mělo by tam být snad

	<a href="{link nazevHandle!}">abc</a>
toka
Člen | 253
+
0
-

redhead napsal(a):

Nad tvarem URL bys v nette neměl vůbec přemýšlet, pokud chceš odkazovat na nějakou URL, uvedeš to všude v šabloně (i v JS) úplně stejně:

<a href="{nazevHandle!}">abc</a>
$.get({nazevHandle!}, ....);

Nevím, proč jsem to dělal ručně, když to je práce navíc. Ale jak píšeš ty, tak to nefunguje, to Latte filtr dle očekávání „nadává“. Předpokládám, že to má být {link nazevHandle!}.

Editoval toka (4. 3. 2010 19:39)

toka
Člen | 253
+
0
-

@Etch: než jsem to stihl odeslat, tak jsi byl rychlejší, no :-)

i.magine
Člen | 81
+
0
-

Nejak takhle bych to udelal

$("#id_prvku").onchange(evt, function(){

	$.get({link necoUdelej!}, {"value": value}, function (payload) {
    	//callback
   	 ...
	});

}
toka
Člen | 253
+
0
-

Ano, jen bych doporučoval, s ohledem na vrácený payload používat u get parametr určující, v jakém tvaru přijde odpověď – predchazeni-problemu-s-jquery-ajaxsetup-a-datatype. Není to nutné, ale raději to sem píši, protože mne to docela „zaseklo“.

redhead
Člen | 1313
+
0
-

toka napsal(a):

jak píšeš ty, tak to nefunguje, to Latte filtr dle očekávání „nadává“. Předpokládám, že to má být {link nazevHandle!}.

Ano, jsem idiot. Zdálo se mi to nějaké krátké..

toka
Člen | 253
+
0
-

Nenadávej si! Já jsem právě byl strašně překvapen – jsem si říkal, že to Nette je už totálně geniální, když to jde tak krátce.

pjoter
Člen | 118
+
0
-

ok díky vyřešeno