AJAX RSS FEED???
soeinuser
- javascript
So, ich hab ein Script, das aber nicht funktioniert, ich hab schon alles versucht, jedoch bekomm ich ständig die fehlermeldung:"zugriff verweigert" WISO hergottnochmal ist mein Zugriff verweigert? kann mir das vieleicht jemand sagen???? kenne mich nicht so gut aus mit RSS feeds.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Unbenanntes Dokument</title>
</head>
<body>
<script language="javascript" type="text/javascript">//<![CDATA[
ajaxRequest = function(u,f,m,b,h,s)
{
this.url = u;
this.wState = f || function() { };
this.method = m || "GET";
this.body = b || null;
this.headers = h || false;
this.sync = s || true;
this.abortReq = false;
this.req = (window.XMLHttpRequest)
?
new XMLHttpRequest()
:
((window.ActiveXObject)
?
new ActiveXObject("Microsoft.XMLHTTP")
:
false
);
this.doRequest = function()
{
this.req.open(this.method,this.url,this.sync);
if (this.headers)
{
for (var i=0; i<this.headers.length; i+=2)
{
this.req.setRequestHeader(
this.headers[i],this.headers[i+1]
);
}
}
this.req.onreadystatechange = this.wState;
(!this.abortReq) ? this.req.send(this.body) : this.req.abort();
}
}
var showHeadline = function(rss)
{
var news = document.getElementById("rss");
var root = rss.getElementsByTagName("channel")[0];
var items = root.getElementsByTagName("item");
for (var i=0 ; i<items.length; i++)
{
var titel = items[i].getElementsByTagName("title")[0].firstChild.nodeValue;
var anker = items[i].getElementsByTagName("link")[0].firstChild.nodeValue;
var elm = document.createElement("li");
news.appendChild(elm);
var a = document.createElement("a");
a.setAttribute("href", anker);
a.appendChild(
document.createTextNode(titel)
);
elm.appendChild(a);
}
}
var orfunction = function()
{
if (xmlhttp.req.readyState==4)
{
if (xmlhttp.req.status == 200)
{
try
{
if (netscape.security.PrivilegeManager.enablePrivilege)
{
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
}
}
catch (err) { }
showHeadline(xmlhttp.req.responseXML);
}
}
};
var xmlhttp = new ajaxRequest("http://www.blick.ch/news/schweiz/rss.xml", orfunction);
xmlhttp.doRequest();
//]]>
</script>
<ul id="rss"></ul>
</body>
</html>
Moin!
So, ich hab ein Script, das aber nicht funktioniert, ich hab schon alles versucht, jedoch bekomm ich ständig die fehlermeldung:"zugriff verweigert" WISO hergottnochmal ist mein Zugriff verweigert? kann mir das vieleicht jemand sagen????
Simpel: Mit Javascript (auch mit AJAX) darfst du nur auf die eigene Domain (die, wo die HTML-Seite herkommt) zugreifen - externe Webserver sind für Javascript tabu, da kommt dann immer diese Meldung "Zugriff verweigert".
- Sven Rautenberg
Hi soeinuser,
var xmlhttp = new ajaxRequest("http://www.blick.ch/news/schweiz/rss.xml", orfunction);
Liegt das vorliegende HTML-Dokument auf www.blick.ch? Wenn nein, dann informier dich mal über "Cross Domain Scripting". Übrigens liefert auch der 4. Treffer bei einer Google-Suche nach ajax zugriff verweigert bereits eine Erklärung.
MfG, Dennis.
hi,
Wenn nein, dann informier dich mal über "Cross Domain Scripting".
Bzw. Same Origin Policy, dürfte m.E. das gebräuchlichere Stichwort sein.
gruß,
wahsaga
Hi wahsaga,
Bzw. Same Origin Policy, dürfte m.E. das gebräuchlichere Stichwort sein.
Ah, da ist doch das Stichwort, woran ich mich so vergeblich zu erinnern versuchte ;-)
MfG, Dennis.
Hi
Benutztst du den Mozilla? Der blockt AFAIK lokale HTTP-Requests. Google mal nach der Fehlermeldung, du wirst den Work-a-round schnell finden.
BTW: Ich hab einen einfachen Feed-Parser geschrieben, der in meinem Dashboard-Widget enthalten ist. Das Teil läuft zur Zeit nur im Safari und braucht noch eine Runde Überarbeitung (vor allem die Webseite! War halt quick&dirrrty). Aber anschauen kannst du es dir ja mal: http://inews.signrain.com. Downloaden und ein wenig Quellcode lesen. Eine bessere Version, wohl aber auch nur für Safari, kommt in ca. zwei Wochen.
Gruss
Tom2