Autor Zpráva
alt64
Profil *
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
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
Reaguji na joa:
Není to ten problém?
Tipnul bych si, že ses trefil.
_es
Profil
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 *
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
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
}

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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