Fehler beim Auslesen von xml mit js
12drei
- javascript
Hallo. Ich habe mir einen Code geschrieben, welcher mit JS XML auswertet. Doch irgendwo ist ein Fehler, den ich nicht finde. Wer kann mir helfen?
<html>
<head>
<title>Test</title>
<script type="text/javascript"><!--
var http = null;
if (window.XMLHttpRequest) {
http = new XMLHttpRequest();
} else if (window.ActiveXObject) {
http = new ActiveXObject("Microsoft.XMLHTTP");
}
window.onload = function() {
if (http != null) {
http.open("GET", "http://www.eucharistiefeier.de/lk/api/lkul00000000.xml", true);
http.onreadystatechange = ausgeben;
http.send(null);
}
}
function ausgeben() {
if (http.readyState == 4) {
var bible = document.getElementById("bible");
var daten = http.responseXML;
var ergebnisse = daten.getElementsByTagName("celebration");
for (var i = 0; i < ergebnisse.length; i++) {
var name, url;
var datum = ergebnisse[i];
for (var j = 0; j < datum.childNodes.length; j++) {
with (datum.childNodes[j]) {
if (nodeName == "l1") {
name = firstChild.nodeValue;
} else if (nodeName == "ev") {
url = firstChild.nodeValue;
}
}
}
var p = document.createElement("p");
var r1 = document.createTextNode("Die heutige Tageslesung ist: " + name);
p.appendChild(r1);
bible.appendChild(p);
}
}
}
//-->
</script>
</head>
<body>
<ul id="bible"></ul>
</body>
</html>
LG
Luensche
P. S.: Es kommt folgende Fehlermeldung:
Uncaught TypeError: Cannot call method 'getElementsByTagName' of null
Es wird mir angezeigt, dass der Fehler in Zeile 23 sein soll. Vermutlich gibt es schon ein Problem mit var http = null;
http.open("GET", "http://www.eucharistiefeier.de/lk/api/lkul00000000.xml", true);
ist das deine Domain? Sonst könnte es sein, dass die Same-Origin-Policy greift.
http.open("GET", "http://www.eucharistiefeier.de/lk/api/lkul00000000.xml", true);
ist das deine Domain? Sonst könnte es sein, dass die Same-Origin-Policy greift.
Nein, ist nicht meine Domain. Was ist denn die Same-Origin-Policy?
LG
Hi,
ist das deine Domain? Sonst könnte es sein, dass die Same-Origin-Policy greift.
Nein, ist nicht meine Domain. Was ist denn die Same-Origin-Policy?
Wenn du hier Stichworte genannt bekommst, gebe dir bitte selber ein bisschen Mühe, dich über diese zu informieren.
http://www.google.com/search?q=same+origin+policy
MfG ChrisB
Hi,
ist das deine Domain? Sonst könnte es sein, dass die Same-Origin-Policy greift.
Nein, ist nicht meine Domain. Was ist denn die Same-Origin-Policy?
Wenn du hier Stichworte genannt bekommst, gebe dir bitte selber ein bisschen Mühe, dich über diese zu informieren.
http://www.google.com/search?q=same+origin+policyMfG ChrisB
Ich denke nicht, dass das zutrifft, da die Sache ja für alle da sein soll. Sonst würde auch kein xml zur Verfügung gestellt werden, oder? Siehe auch http://www.eucharistiefeier.de/lk/api-hilfe.php
Ich denke nicht, dass das zutrifft, da die Sache ja für alle da sein soll.
es dreht sich um ein technisches Problem, kein ethisches
Ich denke nicht, dass das zutrifft, da die Sache ja für alle da sein soll.
es dreht sich um ein technisches Problem, kein ethisches
Das ist mir schon klar. Aber würde der Betreiber diese Sachen den Benutzern zur Verfügung stellen, wenn man sie nicht benutzen kann?
Hi,
Ich denke nicht, dass das zutrifft, da die Sache ja für alle da sein soll.
es dreht sich um ein technisches Problem, kein ethisches
Das ist mir schon klar. Aber würde der Betreiber diese Sachen den Benutzern zur Verfügung stellen, wenn man sie nicht benutzen kann?
Es gibt mehr als einen Weg, diese „Sache“ zu benutzen – bspw. durch serverseitige Auswertung der Daten.
Clientseitig per JavaScript kommst du da aber nicht ran, sofern keine entsprechenden Voraussetzungen vom Betreiber geschaffen werden.
MfG ChrisB
Aber würde der Betreiber diese Sachen den Benutzern zur Verfügung stellen, wenn man sie nicht benutzen kann?
Diese Schnittstelle ist für das serverseitige Auslesen des XML-Feeds gedacht. Auf der Clientseite im Browser läuft nur JavaScript und dort gibt es aus Sicherheitsgründen die Same-Origin-Policy, die erst einmal XMLHttpRequests zu fremden Servern blockt. Wie gesagt gibt es neuere Techniken, mit denen die Betreiber von eucharistiefeier.de solche Cross-Domain-Zugriffe erlauben könnten, allerdings unterstützen das noch nicht alle relevanten Browser. Daher solltest du die XML-Datei besser serverseitig herunterladen und verarbeiten.
Mathias
Hi,
ist das deine Domain? Sonst könnte es sein, dass die Same-Origin-Policy greift.
Ich denke nicht, dass das zutrifft, da die Sache ja für alle da sein soll.
Wenn du „nicht denkst“, dass die Same Origin Policy hier greift, dann hast du dich noch nicht informiert, was sie bedeutet.
Sonst würde auch kein xml zur Verfügung gestellt werden, oder?
Der Browser setzt die Same Origin Policy durch, und der Browser weiß nichts von irgendwelchen Absichten, die der Anbieter der Ressource vielleicht haben mag oder nicht.
Es gibt in modernen Browsern die Möglichkeit, cross-domain XHR durchzuführen – dazu muss allerdings auch der Anbieter der fremden Ressource seinen Teil leisten, indem er über einen speziellen HTTP-Header sein „Einverständnis“ auch explizit dem Browser erklärt. Und momentan sieht es nicht so aus, als ob er das bereits aktiv täte.
MfG ChrisB