2010-12-14 2 views
1

Ich habe eine Webseite, die zwei separate RSS-Feeds laden und in einem Ticker anzeigen muss. Die Seite lädt und läuft gut auf meinem eigenen Rechner, aber wenn ich sie auf unseren Apache-Webserver lege, lädt sie nichts. Wenn ich die Debug-Konsole öffnen, zeigt es die folgende Fehlermeldung (in Safari 5.0.2):XMLHttpRequest für HTML-Seite auf Webserver aber nicht in Entwicklung

NETWORK_ERR: XMLHttpRequest Exception 101: ein Netzwerkfehler in synchrone Anforderungen aufgetreten

Wie kann ich dieses Problem beheben?

Hier ist die grundlegende Gliederung der Javascript-Methoden zum Laden der RSS-Feeds.

function init() { 
     // get RSS forecast 
     getRSS("http://weather.yahooapis.com/forecastrss?p=63211"); 
     getRSS("http://webserver.com/reader.xml"); 
    } 

function getRSS (url) { 
    xmlhttp=new XMLHttpRequest(); 
    xmlhttp.open("GET", url, false); 
    xmlhttp.send(); 
    xmlobject=xmlhttp.responseXML; 
    // code to process response here... 
    } 
+0

1. Ich denke, Sie haben den Titel Ihrer Frage rückwärts 2. Was geschieht, wenn Sie die problematische URL manuell in Ihren Browser laden? –

+0

Wenn Sie es auf true statt auf false setzen und die onreadystatechange verwenden, was ist der http-Status/statusText? – epascarello

+0

Ja, ich dachte, ich hätte den Titel repariert, nachdem ich ihn gepostet habe, aber es ist wieder so wie es war. Wenn ich das Flag auf true setze, funktioniert es überhaupt nicht, selbst auf dem Dev-Rechner. StatusText ist OK, StatusText ist 200. Ich bin mir nicht sicher, wie man onreadystatechange verwendet. – solerous

Antwort

2

Problem ist, dass JavaScript, um die hat same origin policy so können Sie keine Inhalte von einer anderen Domäne greifen.

+0

Angenommen natürlich, dass das Dev-Setup nicht über 'webserver.com' erreichbar ist. Wenn ich in meiner Entwicklungsumgebung arbeite, benutze ich oft die Host-Datei, um den DNS-Eintrag für meine Domäne zu überschreiben, so dass ich, wenn ich mydomain.tld zugreife, in die Dev-Box geleitet werde. – UnkwnTech

+0

Danke für die Antwort. Weder der Yahoo-RSS-Feed (offensichtlich) noch der Webserver "webserver.com" werden auf dem Webserver gehostet, auf dem ich versuche zu implementieren (nur um klar zu sein). Ich habe auf meiner Dev-Maschine nichts Spezielles eingerichtet, um etwas außer Kraft zu setzen, deshalb bin ich verwirrt darüber, warum es dort funktionieren würde, basierend auf dem, was du gesagt hast. Ist es nicht möglich, RSS-Feeds einfach über HTML zu konsumieren? Ich dachte, dafür ist XMLHttpRequest gedacht. – solerous

+0

Wenn Sie Zeug über Domäne abrufen möchten, unterstützt einige Browser CORS, aber die einfachste Lösung ist, einen Proxy auf Ihrem Server zu machen. – epascarello

Verwandte Themen