flokli
Erfahrenes Mitglied
Hallo,
ich bin dabei, mir ein Script zu basteln, was mithilfe von einer dynamischen XML (erzeugt von PHP) den Inhalt eines Ordners anzeigt inkl. Miniaturansicht, Größe usw...
Die XML-Datei wird korrekt erstellt, all das läuft wunderbar.
Jetzt will ich die Werte in der XML-Datei auslesen (mit AJAX), als Variablen speichen (ob Objekt/Array weiß ich noch nicht genau...).
Doch ich scheitere schon an einer greundlegenden Sache, nämlich den (zugegeben hier schon oft diskutierten) globalen Variablen in Javascript (innerhalb Funktionen)...
Ich habe die Variablen ohne das Schlüsselwort var deklariert und kann sie trotzdem nicht ansprechen.
Hier die Codes (gekürzt):
XML-Datei (content.xml.php):
Javascript-Funktionen (function.js)
function macheRequest(url) startet den Request,
function do_root_node() zieht sich die Unterobjekte von <root>[..]</root> , in dieser wird die Funktion makeOptions(xml_root_node) aufgerufen, die dann eigentlich die Variablen erzeugen sollte...
Im Debugger (Firefox) steht aber, die Variable wäre undefiniert und ich kann nicht drauf zugreifen, wohl aber mit einem Alert innerhalb von makeOptions(...) ausgeben...
Was mache ich falsch?
ich bin dabei, mir ein Script zu basteln, was mithilfe von einer dynamischen XML (erzeugt von PHP) den Inhalt eines Ordners anzeigt inkl. Miniaturansicht, Größe usw...
Die XML-Datei wird korrekt erstellt, all das läuft wunderbar.
Jetzt will ich die Werte in der XML-Datei auslesen (mit AJAX), als Variablen speichen (ob Objekt/Array weiß ich noch nicht genau...).
Doch ich scheitere schon an einer greundlegenden Sache, nämlich den (zugegeben hier schon oft diskutierten) globalen Variablen in Javascript (innerhalb Funktionen)...
Ich habe die Variablen ohne das Schlüsselwort var deklariert und kann sie trotzdem nicht ansprechen.
Hier die Codes (gekürzt):
XML-Datei (content.xml.php):
PHP:
<?php
header("Content-type: text/xml");
echo <<<XMLDOC
<?xml version="1.0" encoding="ISO-8859-1" ?>
<root>
<options>
<name>dataview</name>
<version>1.0</version>
<rootpath>/</rootpath>
<path>/dataview_xml</path>
<byte>b</byte>
</options>
<items>
<item>
<type>folder</type>
<ext></ext>
<filename>Neuer Ordner</filename>
<img>folder.png</img>
<size>4000</size>
</item>
<item>
<type>file</type>
<ext>gif</ext>
<filename>test.gif</filename>
<img>test.gif</img>
<size>200</size>
</item>
</items>
</root>
XMLDOC;
?>
Javascript-Funktionen (function.js)
Code:
var http_request = false;
function macheRequest(url) {
http_request = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
http_request = new XMLHttpRequest();
if (http_request.overrideMimeType) {
http_request.overrideMimeType('text/xml');
// zu dieser Zeile siehe weiter unten
}
} else if (window.ActiveXObject) { // IE
try {
http_request = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
http_request = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
if (!http_request) {
alert('Ende :( Kann keine XMLHTTP-Instanz erzeugen');
return false;
}
http_request.onreadystatechange = do_root_node;
http_request.open('GET', url, true);
http_request.send(null);
}
function do_root_node(){
if (http_request.readyState == 4) {
if (http_request.status == 200) {
xmldoc = http_request.responseXML;
xml_root_node = xmldoc.getElementsByTagName('root').item(0);
//Aufruf der Funktionen
makeOptions(xml_root_node);
}
else {
alert('Bei dem Request ist ein Problem aufgetreten.');
}
}
}
function makeOptions(xml_root_node) {
//JETZT WERDEN DIE NICHT ANSPRECHBAREN VARS DEKLARIERT!
xml_options_tmp=xml_root_node.getElementsByTagName('options').item(0);
xml_options = new Object();
xml_options.name =xml_options_tmp.getElementsByTagName('name').item(0).firstChild.data;
xml_options.version =xml_options_tmp.getElementsByTagName('version').item(0).firstChild.data;
xml_options.rootpath=xml_options_tmp.getElementsByTagName('rootpath').item(0).firstChild.data;
xml_options.path =xml_options_tmp.getElementsByTagName('path').item(0).firstChild.data;
xml_options.byte =xml_options_tmp.getElementsByTagName('byte').item(0).firstChild.data;
return xml_options;
}
function do_root_node() zieht sich die Unterobjekte von <root>[..]</root> , in dieser wird die Funktion makeOptions(xml_root_node) aufgerufen, die dann eigentlich die Variablen erzeugen sollte...
Im Debugger (Firefox) steht aber, die Variable wäre undefiniert und ich kann nicht drauf zugreifen, wohl aber mit einem Alert innerhalb von makeOptions(...) ausgeben...
Was mache ich falsch?