Autor | Zpráva | ||
---|---|---|---|
BuGeR Profil |
#1 · Zasláno: 12. 2. 2013, 15:17:37
Zdravím,
mám kód: function funkce() { var vysledek = 0; $.ajax({ type: "POST", url: "soubor.php", success: function(r) { vysledek = r; }, }); return vysledek; } Výše uvedený kód není funkční (sémanticky), nejspíš proto, že se vysledek = r; nastavuje jen lokalně v dané funkci v rámci success. Děkuji |
||
Joker Profil |
#2 · Zasláno: 12. 2. 2013, 15:29:12
BuGeR:
„Jak mám docílít toho, abych mohl ve funkci success měnit lokalní proměnné funkce funkce()?“ Přesně tak jak to je napsané, ve funkci success by se měla použít proměnná vysledek z kontextu funkce funkce (jestli se nepletu).
Dotaz předpokládám směřuje na to, jak v příkazu return vrátit tu hodnotu ze success. Odpověď zní: Nijak. Ta podstatná věc je A v termínu AJAX, které znamená asynchronní. Jelikož XMLHTTPRequest se zpracovává asynchronně a funkce mezitím pokračuje dál, funkce success se zavolá ve chvíli, kdy volání funkce funkce už dávno skončilo.
|
||
BuGeR Profil |
#3 · Zasláno: 12. 2. 2013, 15:37:24
Joker:
Aha, ok děkuji za odpověď. Neexistuje nějaká možnost, jak "počkat" na to, až se požadavek odešle a pak pokračovat dále ve funkci? (jinými slovy jak počkat na success) |
||
Joker Profil |
#4 · Zasláno: 12. 2. 2013, 15:48:51
BuGeR:
Jde poslat synchronní požadavek, nebo ten kód přepsat tak, aby čekat nemusel (z toho kousku není zřejmé, jak by to mělo být). |
||
_es Profil |
BuGeR:
„jak "počkat" na to, až se požadavek odešle“ Ako „odošle“? Nejde predsa o odoslanie požiadavku z prehliadača, ale o načítanie odpovede zo servera. Čo myslíš tým „počkať“? Že by sa sa celý prehliadač „zasekol“ až do načítania odpovede? Veľmi praktické to nie je, no objekt XMLHttpRequest umožňuje aj to - odkaz v [#4].
|
||
Radek9 Profil |
#6 · Zasláno: 12. 2. 2013, 16:27:52
BuGeR:
Většinou se to prostě dělá tak, že potřebný kód, který pracuje s výsledkem, se dá do té success funkce.
|
||
BuGeR Profil |
#7 · Zasláno: 12. 2. 2013, 20:33:41
Super, mám už v tom jasno.
Díky moc všem :) |
||
Časová prodleva: 11 let
|
0