| 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: 13 let
|
|||
0