Autor | Zpráva | ||
---|---|---|---|
alt64 Profil * |
#1 · Zasláno: 15. 2. 2012, 10:54:47
Ahoj,
v uvodu skriptu mam definovano: var countOfSubtypes = new Object(); Pote nacitam Json result, coz je objekt a ukladam do globalni promenne: countOfSubtypes = result.pocty_subtypy; Pokud chci ale v jine fci pristoupit k tomuto objektu za pomoci: console.log(countOfSubtypes); Nedari se mi to, resp. konsole mi rika, ze to objekt je ale je prazdny. Jak se to ma spravne delat? Diky moc za kazdy priklad.. Diky |
||
joe Profil |
#2 · Zasláno: 15. 2. 2012, 11:18:35
alt64:
„Pote nacitam Json result“ Načítáš kdy? Z uvedeného popisu zřejmě proměnnou měníš v nějaké callback funkci a console.log(...); zavoláš dřív, než se začne vyvolat. Není to ten problém?
|
||
Chamurappi Profil |
#3 · Zasláno: 15. 2. 2012, 11:21:05
|
||
_es Profil |
#4 · Zasláno: 15. 2. 2012, 12:15:26
alt64:
Robíš asi stále niečo také, ako keby sa niekto pokúšal čítať písomnú reakciu ihneď po odovzdaní listu na pošte. |
||
alt64 Profil * |
#5 · Zasláno: 15. 2. 2012, 13:04:08
joe:
„zavoláš dřív, než se začne vyvolat. Není to ten problém?“ No v callback fci to sice je ale objekt je tam jiz dostupny, a pokud je promenna globalni, muzu jit hodnotu priradit vzdy ne? Jelikoz treba do lolalstorage v zminovanem callbacku ukladat mohu.. Popr. jak to vyresit? |
||
joe Profil |
#6 · Zasláno: 16. 2. 2012, 21:52:19
alt64:
„No v callback fci to sice je ale objekt je tam jiz dostupny“ Pochopitelně, pokud si dáš vypsat proměnnou pomocí console.log v callback funkci, vypíše se ti. Pak ale nemůžeš očekávat, že ta proměnná, kterou plníš "až" v callbacku, bude dostupná před tím, než se ten callback provede. Lepší to bude na příkladu. Teď to děláš takto:
var globalVar; ajax(..., function (data) { globalVar = data.json; console.log(globalVar); // vypise vracena data }); console.log(globalVar); // vrati undefined, tady tedy tu promennou nemuzes pouzit Takže si musíš napsat funkci a nebo to udělat přímo v té callback funkci (tu jsem označil): var globalVar; ajax(..., function (data) { globalVar = data.json; mojeFunkce(); }); function mojeFunkce() { console.log(globalVar); // tady to už půjde, protože se tato funkce volá v callbacku, tedy až server něco odpoví a vrátí výsledek } |
||
Časová prodleva: 11 let
|
0