Dynamické předání parametru do handlu

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

Ahoj, potřeboval bych nějakým způsobem po akci change nějakého select boxu předat ID dané položky do handlu a dále s timto ID pracovat. Jedná se tedy o ajaxovou operaci. Javascript mi funguje. I předání statického parametru jde bez problému. Jakmile chci do parametru vlozit js promennou, v handlu se to chova jako string.

<script>
	$(function(){
		$('select.ajax').live('change',function(){
			id=$(this).val();
			$.get({link change! 'id'=>id});
			return false;
		});
	});
</script>

Tento příklad do handlu vlozi string „id“ misto hodnoty, ktera by mela byt v proměnné id definovane vyse.

Nevěděl by prosím někdo, jak se dá parametr předat??

22
Člen | 1478
+
0
-

čemu to vadí? Je problém si to přetypovat na int?

gavec
Člen | 68
+
0
-

Potřebuju předat id vybrané položky, kterou jsem si hodil do promenne id. V parametru handlu mam ale misto te hodnoty string „id“. Nejde o přetypovani. Jinymy slovy, preda se nazev promenne, ktera ma nest hodnotu vybrane polozky.

22
Člen | 1478
+
0
-

no nazval bych ji jinak, než id a v handleru tu proměnnou pojmenuj stejně.

gavec
Člen | 68
+
0
-

Myslis nazvat jinak ten parametr?
např.

$.get({link change! 'xy'=>id});

a handle pak:

public function handleChange($xy){}

?
Pac i to my promenna $xy v handlu vyhazuje nese hodnotu „id“.

22
Člen | 1478
+
0
-

tak pak je jasne, ze ti tam javascript posila id a ne číslo :-)
si to vydampuj ve FF konzoli.

console.log(your_variable);

Editoval 22 (4. 12. 2011 19:24)

22
Člen | 1478
+
0
-

nemělo by to vypadat spíš takto?

$.get({link change!}, {'xy'=>id});

Editoval 22 (4. 12. 2011 19:26)

newPOPE
Člen | 648
+
0
-

V prvom prispevku miesas hrusky (Latte) z jablkami (JS). (Ak teda dobre rozumiem problemu)

<script>
	$.get({link change! 'id'=>id});
</script>

je samozrejme ze ti to posle ‚id‘ a nie hodnotu z JS. Skusil by som to takto:

<script>
	var id = ...;
	$.get({link change!}, { id: id});
</script>
gavec
Člen | 68
+
0
-

Kdyz to zapisu takto, tak se nevypise nic. Ono to totiz tu promennou id nebere jako promennou, ale jako string? nemelo by se to v tom js zapsat nejakym jinym zpusobem?

22
Člen | 1478
+
0
-

tak, jak to opravil newPOPE, je to správně a mělo by to fungovat. Akorát bych to nepředával asi pod id. tuším že s tím může být nějaký problém kvůli routě, kde máš definované id

Editoval 22 (4. 12. 2011 19:58)

gavec
Člen | 68
+
0
-

newPOPE napsal(a):

V prvom prispevku miesas hrusky (Latte) z jablkami (JS). (Ak teda dobre rozumiem problemu)

<script>
	$.get({link change! 'id'=>id});
</script>

je samozrejme ze ti to posle ‚id‘ a nie hodnotu z JS. Skusil by som to takto:

<script>
	var id = ...;
	$.get({link change!}, { id: id});
</script>

Takhle jsem to taky zkoušel, ale nefunguje. Nemuze byt problem v handlu?

	public function handleChange($id){

		$this->foo = $id;
		if($this->isAjax()){
			$this->invalidateControl('pokus');
		}
	}
gavec
Člen | 68
+
0
-

Pomocí konzole jsem zjistil, že to id se předává pomocí skriptu, který poslal newPope. Problém je v tom, že se mi ten parametr nedaří vytáhnout v handlu. Url která se při požadavku posílá, je následující.

/?do=change$id=16

Pomocí $this->getParam(‚id‘); se mi ale parametr nepodařil vytáhnout.

gavec
Člen | 68
+
0
-

Tak problém byl v pojmenování parametru. Přejmenoval jsem parametr tak, jak psal „22“ výše a nyní už to funguje.