Paraméter átadás – Ajax és OnComplete
ajax, hogyan, prototype
Az Ajax.Updater prototype objektum használatakor előbb-utóbb beleütközünk abba a problémába, hogy szeretnénk használni az OnComplete tulajdonságot. Ez még nem olyan baj, de ha szeretnénk neki paramétereket is átadni akkor meglepetések fognak érni.
Ha az Ajax.Updater-t használjuk akkor valami ilyesmi lesz a kódunk:
new Ajax.Updater(
$('ajaxinfodiv'),
'ajaxlekerdezo.php',
{
method:'get',
onComplete:leKerdezesKesz
});
Ez azt fogja csinálni, hogy amikor az AJAX kommunikáció az onComplete szakaszba ér, akkor meghívja és végrehajtja a leKerdezesKesz() függvényt.
A probléma
A dolog akkor kezd érdekessé válni, amikor a leKerdezesKesz() függvénynek szeretnénk átadni egy (vagy több) paramétert.
new Ajax.Updater(
$('ajaxinfodiv'),
'ajaxlekerdezo.php',
{
method:'get',
onComplete:leKerdezesKesz('góranga','harihari')
});
Sajnálatos módon azt fogjuk tapasztalni, hogy az onComplete-hez kapcsolt leKerdezesKesz() függvényünk nem akkor hívódik meg amikor az Ajax.Updater befejezi a futását, és feltölti a válaszként érkezett adatokkal az ajaxinfodiv id-jű html elemünket, hanem ez előtt. Namásmost, ha történetesen a leKerdezesKesz() történetesen pont ezzel a html elemmel akar dolgozni (pl átszínezi, villogtatja, vagy bármi), akkor nem a várt eredményt adja, mivel a html elemünk a meghívás pillanatában üres lesz, vagy ha van onLoading tulajdonságunk, akkor az azzal definiált tartalom lesz benne.
A megoldás
A megoldás egyszerű, a prototype onComplete kezelésének mögöttes és szövevényes megoldásából adódik
Ha az onComplete tulajdonságnak egy anonim függvényt adunk meg, akkor az már ténylegesen akkor fog lefutni amikor azt akartuk.
new Ajax.Updater(
$('ajaxinfodiv'),
'ajaxlekerdezo.php',
{
method:'get',
onComplete:function(){
leKerdezesKesz('góranga','harihari');
}
});
Ez a bejegyzés rrd billentyűzetéből potyogott ki 2007 április 28. napján 04:56:51-kor. Eddig 2,268 olvasást ért meg. A visszajelzéseket nyomonkövetheted ezzel az RSS feed-el. Véleményt nyilváníthatsz, vagy trackbackolhatsz a saját oldaladon.
JólMegMondjad!
1 vélemény
-
Balogh László
2010 szeptember 17. 19:15:35Köszönet a leírásért !

Hasznos volt számomra.
Üdv. Laci



