Egy (szerintem egyszerű) ajax kérdés
A következő problémára keresem a választ:A meghívott php visszaküld valami választ, ezt szeretném
visszaadni a függvényből egy return-nal.
Arra rájöttem, hogy az ajax.transport.responseText a válasz,
de simán a
return ajax.transport.responseText;
nem működik, ugyanis akkor még az ajax.transport.readyState
rtéke 1.
Ha kiteszek egy alert(1)-et a return elé, akkor már azt
téríti vissza, amit kapni szeretnék.
Próbáltam egy
while (ajax.transport.readyState < 4);
sorral várakoztatni, végtelen ciklusba került.
Tehát a kérdés: mit tegyek a ... helyére, hogy addig várakozzon a
függvényem, amíg a readyState értéke 4, és csak akkor
adja vissza a php válaszát?
■ ajax_fuggveny = function(a)
{
ajax = new Ajax.Request(
'valami.php?a=' + a
);
...
}
visszaadni a függvényből egy return-nal.
Arra rájöttem, hogy az ajax.transport.responseText a válasz,
de simán a
return ajax.transport.responseText;
nem működik, ugyanis akkor még az ajax.transport.readyState
rtéke 1.
Ha kiteszek egy alert(1)-et a return elé, akkor már azt
téríti vissza, amit kapni szeretnék.
Próbáltam egy
while (ajax.transport.readyState < 4);
sorral várakoztatni, végtelen ciklusba került.
Tehát a kérdés: mit tegyek a ... helyére, hogy addig várakozzon a
függvényem, amíg a readyState értéke 4, és csak akkor
adja vissza a php válaszát?
doksi példa
nem az a megoldás, hogy várakoztatod a js futását, hanem hogy sikeres kérés után meghívsz egy függvényt. ettől lesz aszinkron az ajax, hogy nem kell várni az eredményre, hanem ha megjön a válasz akkor csinálsz valamit (közben pedig nem tartod fel a böngészőt).
Köszi
magyar verzió
Itt találsz egy elég jó prototype leírást magyarul, ajax-al is foglalkozik:
http://prototype.rajmi.hu/prototype.js.hu.html
üdv
BL
"lefagy a böngésző"
idézz többet
A state-et elvileg így érdemes figyelni: if (ajax.transport.readyState != 4) { return; } else {..}
Erre általában nincs szükség, elrejti használt rendszer