Just nu i M3-nätverket
Gå till innehåll

xsl url request med js


fadichmn

Rekommendera Poster

Jag försöker få information från en XSL fil som ligger på en annan server.

 

"status.xsl" som ligger i samma map som javascript filen, funkar utmärkt:

xmlhttp.open("GET","status.xsl",false);

 

Hur ska jag göra för att det ska få information från annan server?

 

Detta funkar inte:

xmlhttp.open("GET","http://server-adress/status.xsl",false);

 

Här är hela koden:

<html>
<body>

<script type="text/javascript">
if (window.XMLHttpRequest)
 {// code for IE7+, Firefox, Chrome, Opera, Safari
 xmlhttp=new XMLHttpRequest();
 }
else
 {// code for IE6, IE5
 xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
 }
var request = new XMLHttpRequest();
xmlhttp.open("GET","status.xsl",false);
xmlhttp.send();
xmlDoc=xmlhttp.responseXML;

document.write("<table border='0'>");
var request = new XMLHttpRequest();
var x=xmlDoc.getElementsByTagName("icecastst");
for (i=0;i<x.length;i++)
 {
 document.write("<tr><td>");
 document.write(x[i].getElementsByTagName("Current-Song")[0].childNodes[0].nodeValue);
 document.write("</td><td>");
 }
document.write("</table>");
</script>

</body>
</html>

 

Detta ska vara i Javascript forumet, gjorde fel där :(

Länk till kommentar
Dela på andra webbplatser

Det där har att göra med Same Origin Policy, dvs att sånt som hämtas med AJAX måste komma från samma domän som sidan man just nu är på.

 

Det finns lite olika sätt att ta sig runt det, det enklaste brukar vara att göra en enkel proxy-sida. Dvs du gör ett anrop mot getfile.aspx (eller php om du föredrar det) och den sidan i sin tur hämtar filen via http.

Länk till kommentar
Dela på andra webbplatser

Även på samma server kan man få problem med olika portar, se:

To further minimize file access threats, cross-port and mixed protocol script access is checked to prevent the user from displaying potentially harmful content from what appears to be a trusted site. The native implementation of XMLHTTP allows only HTTP, Secure Hypertext Transfer Protocol (HTTPS), and a subset of HTTP verbs in calls to XMLHttpRequest.open. In Internet Explorer 7, the XMLHTTP request can only specify URLs with the same port and protocol method as that from which the page is served. In Windows Internet Explorer 8 and later, that restriction has been removed. Internet Explorer does not consider the port to be a part of the Security Identifier (origin) used for Same Origin Policy enforcement.
http://msdn.microsoft.com/en-us/library/ms537505(v=vs.85).aspx

 

Enklast och bäst blir nog som .M säger att skapa en serversides-skriptfil som hämtar data från annan server och serverar din ajax-lösning.

Länk till kommentar
Dela på andra webbplatser

Jag kommer inte på hur jag ska göra en skriptfil. Finns det någonstans att läsa om det eller vad kan jag söka efter?

Länk till kommentar
Dela på andra webbplatser

Exempel (klassisk asp):

<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<%
Function getExternalData(strURL)
  SET Http = Server.CreateObject("Msxml2.ServerXMLHTTP.3.0")
  Http.Open "GET", strURL, False
  Http.Send
  strResponseTxt=Http.responseText
  Set Http = nothing
  getExternalData = strResponseTxt
End Function

Response.Write getExternalData("http://www.someserverontheinternet.com/status.xsl")%>

 

Hade denna liggandes och är som sagt klassisk asp och kräver därför att din webserver har stöd för det.

Sparas som en textfil (UTF-8) med filändelsen .asp

 

Du kan såklart göra den mer dynamisk så att du kan anropa denna fil med en url.

Länk till kommentar
Dela på andra webbplatser

Visst har jag det smile.gif

<?php
function get_url_contents($url){
  $crl = curl_init();
  $timeout = 5;
  curl_setopt ($crl, CURLOPT_URL,$url);
  curl_setopt ($crl, CURLOPT_RETURNTRANSFER, 1);
  curl_setopt ($crl, CURLOPT_CONNECTTIMEOUT, $timeout);
  $ret = curl_exec($crl);
  curl_close($crl);
  return $ret;
}

echo get_url_contents("http://www.someserverontheinternet.com/status.xsl")
?>

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...