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

xsl url request med js

Rekommendera Poster

fadichmn

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 :(

Redigerad av fadichmn

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
.M

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.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster

Ä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.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
fadichmn

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?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster

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.

Redigerad av Cluster
Förtydligande

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
fadichmn

Min webbserver stödjer inte asp, har du inget php kod som ligger bredvid den dära?

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Cluster

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")
?>

 

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...