fadichmn Postad 16 augusti, 2012 Share Postad 16 augusti, 2012 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 More sharing options...
.M Postad 16 augusti, 2012 Share Postad 16 augusti, 2012 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 More sharing options...
Cluster Postad 16 augusti, 2012 Share Postad 16 augusti, 2012 Ä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 More sharing options...
fadichmn Postad 16 augusti, 2012 Trådskapare Share Postad 16 augusti, 2012 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 More sharing options...
Cluster Postad 16 augusti, 2012 Share Postad 16 augusti, 2012 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 More sharing options...
fadichmn Postad 16 augusti, 2012 Trådskapare Share Postad 16 augusti, 2012 Min webbserver stödjer inte asp, har du inget php kod som ligger bredvid den dära? Länk till kommentar Dela på andra webbplatser More sharing options...
Cluster Postad 16 augusti, 2012 Share Postad 16 augusti, 2012 Visst har jag det <?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 More sharing options...
Rekommendera Poster
Arkiverat
Det här ämnet är nu arkiverat och är stängt för ytterligare svar.