Autor Zpráva
hunter_dave
Profil
Zdravím,

mám problém s jQuery funkcí get. Jde o to, že pokud načtu obsah souboru do proměné tak ne vždy mi to vrátí co má. Podle mě jde o to, že data se nestačí do proměnné "result" načíst a zobrazí se buť stará data z této proměnné nebo nic.

mám tenhle kód:
sobor whisperer.php vrací podle toho co zadá uživatel do pole (text) seznam měst
<script type="text/javascript">
jQuery.get("/layout/plugins/whisperer/whisperer.php?search="+text, function(response){result = response;});
// řeším to tak, že dám tomu načtení chvíli čas - 1 sekundu, ale u pomalejšího připojení s větší databází (několik tisíc měst) to prostě nejde 
setTimeout("fillwhisperer(result)", 1000);
</script>
Takže můj dotaz zní: Existuje v jquery nebo v js něco (funkce nebo cyklus), co by se opakovalo dokud by se data nenačetla a pak teprve vyplnil ten naseptavac (fillwhisperer)? Prostě kontrola jestli do proměnné result bylo všechno v pořádku načteno. Uvítám jakékoli rady, už nevím jak dál.
_es
Profil
hunter_dave:
Prečo nezavoláš funkciu fillwhisperer vo funkcii predanej ako druhý argument funkcii jQuery.get? Či ešte jednoduchšie jQuery.get(..., fillwhisperer);? Premennú text máš definovanú kde? Ale celý ten tvoj kód akosi nemá zmysel - „podle toho co zadá uživatel do pole (text)“ - to by malo reagovať na nejakú udalosť toho políčka a nie to byť hentak.
hunter_dave
Profil
je to jenom kus kódu nechtěl sem to sem dávat celý. v proměnné text je hodnota inputu a funkce se vola udalostmi onkeyup a onfocus .. Takže to, že použiju funkci fillwhisperer jako druhý argument v jquery mi pomůže? počká to?
Chamurappi
Profil
Reaguji na huntera_dave:
Co to znamená počká? Nepočká, ta funkce se prostě zavolá, když přijde odpověď (a jestli přijde). Proto se tam přeci dává. Je to normální událost.
_es
Profil
hunter_dave:
V oficiálnej dokumentácii jQuery to máš všetko vysvetlené: api.jquery.com/jQuery.get
hunter_dave
Profil
Chamurappi:
Stává se mi, že když něco napíšu tak to nic nevrátí a když napíšu něco dalšího, tak to vrátí to co by to mělo vrátit na to co jsem napsal předtím. Nevím jestli je to srozumitelný, ale prostě se to chová jinak než by mělo, jakoby se spožděním. A tomu dám třeba tu jednu vteřinu tak to vrátí to co má (když počkám), ale zase ne vždycky, proto se ptám jestli se dá nějak ověřit jestli už to něco vrátilo.

_es: Té dokumentaci nějak nerozumím, neměl bys odkaz na nějaký příklad?
_es
Profil
hunter_dave:
jakoby se spožděním.
No ale serveru predsa nejaký čas trvá, než prijme dotaz a pošle odpoveď a aj než odpoveď príde do prehliadača.
hunter_dave
Profil
_es:
No a o tom právě mluvím, potřeboval bych vědět jak nějak počkat na odpověď, ale nevím jak.


Tak vyřešeno, stačilo jak říkal _es jen jako druhý parametr uvést fci fillwhisperer, předtím mi to nefungovalo, ale pak jsem vyzkoušel tenhle zápis, tedy vytvořit funkci a tou funkcí teprve zavolat fillwhisperer a funguje to bez problémů, díky moc za pomoc
<script type="text/javascript">
jQuery.get("/layout/plugins/whisperer/whisperer.php?search="+text, function(response){fillwhisperer(response);});
</script>
Nevím proč nefungovalo:
<script type="text/javascript">
jQuery.get("/layout/plugins/whisperer/whisperer.php?search="+text, fillwhisperer(response));
ale vyřeseno :)
_es
Profil
hunter_dave:
Nevím proč nefungovalo:
Lebo tam má byť funkcia, nie jej návratová hodnota: Časté potíže, zajímavosti a poučné debaty » Rozdíl mezi voláním funkce a funkcí.
Teda by malo fungovať: jQuery.get("/layout/plugins/whisperer/whisperer.php?search="+text, fillwhisperer);
hunter_dave
Profil
_es:
Díky moc za objasnění. :)

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: