Autor | Zpráva | ||
---|---|---|---|
vuuul Profil |
#1 · Zasláno: 24. 10. 2012, 20:37:04
Zdravím,
Pokouším se pomocí AJAXu deklarovat proměnnou a po načtení stránky jí funkcí kontrola nechat "vyplivnout" jako alert. Skript mi však nechce fungovat a nemohu najít chybu. Funkce nacti() je převzata přímo zde z diskuze. Odkaz na živou stránku zde <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <base target="_blank"> <title>Francie</title> <link rel="stylesheet" type="text/css" href="miska.css"> <script> function nacti(url, callback) { var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest(); xhr.open("GET", url, true); xhr.onreadystatechange = function() { if(xhr.readyState == 4) callback(xhr.responseText); }; xhr.send(""); } nacti("data.txt", function(data) { promenna = data; }) function kontrola() { alert(promenna) } window.onload= kontrola; </script> </head> <body> </body> </html> Předem díky za radu |
||
yFang Profil |
vuuul:
Funkce kontrola nezná proměnnou promenna , musíš jí definovat mimo funkci. Např.:
var promena; nacti("data.txt", function(data) { promenna = data; }) function kontrola() { alert(promenna); } nacti , která zaninke po skončení funkce.
|
||
_es Profil |
#3 · Zasláno: 25. 10. 2012, 09:23:40
yFang:
„Funkce kontrola nezná proměnnou promenna, musíš jí definovat mimo funkci.“ „Jinak se s ní pracuje jako s lokální proměnnou ve funkci nacti, která zaninke po skončení funkce.“ Nie je to pravda, ide o vlastnosť globálneho objektu - podobný globálnej premennej: Časté potíže, zajímavosti a poučné debaty » Používejte var
vuuul: „Odkaz na živou stránku zde“ Prečo dávaš do živej ukážky iný kód ako do príspevku v diskusii? Udalosť onload môže nastať ešte pred prijatím dát zo servera z AJAXového dotazu.
|
||
vuuul Profil |
#4 · Zasláno: 25. 10. 2012, 20:24:02
_es:
Jestli se nepletu, tak jediny rozdil je ve jmene promenne. Jak by se dala pojistit ta udalost onload ?
|
||
_es Profil |
#5 · Zasláno: 25. 10. 2012, 20:48:56
vuuul:
„Jak by se dala pojistit ta udalost onload?“ Prečo tú udalosť vôbec používaš? Prečo nezistíš, čo vrátil server vtedy, keď nastane udalosť s tým spojená? Teda vo funkcii priradenej do xhr.onreadystatechange , respektíve vo funkcii predanej ako druhý argument do funkcie nacti ?
|
||
vuuul Profil |
#6 · Zasláno: 25. 10. 2012, 21:38:31
_es S ajaxem bohužel neumím, takže jsem se snažil raději pracovat už se samotným výstupem funkce nacti(), což se ukázalo jako špatná metoda. Asi se budu muset zkusit porozumět funkci nacti()
|
||
_es Profil |
#7 · Zasláno: 25. 10. 2012, 22:02:05
vuuul:
Prečo nezistíš vrátené dáta v riadku 26? |
||
vuuul Profil |
#8 · Zasláno: 25. 10. 2012, 22:11:47
_es:
Koukám, že jsem to až moc ořezal, potřebuju totiž, aby funkce kontrola() proběhla každou vteřinu, takže původně tam bylo ještě setTimeout("kontrola()",1000)
|
||
Časová prodleva: 12 let
|
0