Moiens!
Ich bekomm bald graue Haare. Ich komme hier einfach nicht mit der setInterval()-Funktion und AJAX-Kombination klar.
Thema ist folgendes: ich lese aus einer XML-Datei Werte aus einem Controller aus, welcher dynamisch seine Zustände ändert. Alles auch kein Problem, der Wert wird ausgelesen und sobald man die Seite neu läd wird auch der neue Wert angezeigt (ist ein WaGo-Controller).
Allerdings habe ich hier ein Video gefunden: CoDeSys / WAGO Visualizations using Java script, SSI & XML - YouTube
in dem Video aktualisiert er seine Werte mit der Intervall-Funktion. Jetzt hab ich das auf eigene Faust probiert und wollte das selbige tun, nur macht er es bei mir nicht.
Code kommt hier:
Kann mir jemand helfen, wo hier der Dreher drin ist? Danke sehr!
PS: sry für die weiten Tabs, aber in Notepad++ arbeite ich immer mit Tabulator...
Ich bekomm bald graue Haare. Ich komme hier einfach nicht mit der setInterval()-Funktion und AJAX-Kombination klar.
Thema ist folgendes: ich lese aus einer XML-Datei Werte aus einem Controller aus, welcher dynamisch seine Zustände ändert. Alles auch kein Problem, der Wert wird ausgelesen und sobald man die Seite neu läd wird auch der neue Wert angezeigt (ist ein WaGo-Controller).
Allerdings habe ich hier ein Video gefunden: CoDeSys / WAGO Visualizations using Java script, SSI & XML - YouTube
in dem Video aktualisiert er seine Werte mit der Intervall-Funktion. Jetzt hab ich das auf eigene Faust probiert und wollte das selbige tun, nur macht er es bei mir nicht.
Code kommt hier:
Code:
<!DOCTYPE html>
<head>
<script>
function doIt(datei){
var http;
var text = "";
var cam;
var myXML;
var temp;
//XML-Objekt erzeugen
if (window.XMLHttpRequest) { //Browser-Check für Firefox, IE7+, Chrome, Opera,...
http = new XMLHttpRequest();
} else if (window.ActiveXObject) { //älteren IE-Browser
http = new ActiveXObject("Microsoft.XMLHTTP");
}
http.onreadystatechange = ausgeben;
http.open("GET", datei, true);
http.send();
var int = self.setInterval("ausgeben()", 250);
function ausgeben() { //Funktion, welche ausgeführt wird, sobald der Status sich ändert
if (http.readyState == 4 && http.status == 200) { //erst wenn Status 4 (fertig geladen) erreicht ist, ausführen
//fülle Objekt 'cam' durch dem 'XML-Response' vom 'XML-Objekt' mit dem Element "kamera" (aus dem Gesamten Dokument ('documentElement'))
cam = http.responseXML.documentElement.getElementsByTagName("kamera");
//Zählschleife um Objekte nach einander zu durchsuchen
for(var i = 0; i < cam.length; i++) {
temp = cam[i].getElementsByTagName("id"); //hole Element "id" aus dem "kamera"-Tag (s.o.) mit dem index der Zählschleife
text = text + temp[0].firstChild.nodeValue; //nehme den ersten Unterknoten, aus der Überkategorie in 'temp' (also aus "kamera")
temp = cam[i].getElementsByTagName("name"); //hole Element "name" aus dem "kamera"-Tag (s.o.) mit dem index der Zählschleife
text = text + temp[0].firstChild.nodeValue;
temp = cam[i].getElementsByTagName("hersteller"); //hole Element "hersteller" aus dem "kamera"-Tag (s.o.) mit dem index der Zählschleife
text = text + temp[0].firstChild.nodeValue;
temp = cam[i].getElementsByTagName("irfilter"); //hole Element "id" aus dem "kamera"-Tag (s.o.) mit dem index der Zählschleife
text = text + temp[0].firstChild.nodeValue; //nehme den ersten Unterknoten, aus der Überkategorie in 'temp' (also aus "kamera")
text = text + "<br>"; //Zeilenumbruch anhängen
}
//}, 300);
document.write(text);
}
}
}
</script>
</head>
<body onload="doIt('datei.xml')">
<div id="inhalt">
</div>
</body>
</html>
Kann mir jemand helfen, wo hier der Dreher drin ist? Danke sehr!
PS: sry für die weiten Tabs, aber in Notepad++ arbeite ich immer mit Tabulator...