4
<!DOCTYPE html>
<html>
<head>
<script>
function loadXMLDoc(url)
{
var xmlhttp;
var txt,x,xx,i;
if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
}
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
txt="<table border='1'><tr><th>Author</th><th>Title</th></tr>";
x=xmlhttp.responseXML.documentElement.getElementsByTagName("book");
for (i=0;i<x.length;i++)
  {
  txt=txt + "<tr>";     
  xx=x[i].getElementsByTagName("author");
    {
    try
      {
      txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
      }
    catch (er)
      {
      txt=txt + "<td> </td>";
      }
    }
    xx=x[i].getElementsByTagName("title");
    {
    try
      {
      txt=txt + "<td>" + xx[0].firstChild.nodeValue + "</td>";
      }
    catch (er)
      {
      txt=txt + "<td> </td>";
      }
    }
  txt=txt + "</tr>";
  }
txt=txt + "</table>";
document.getElementById('txtCDInfo').innerHTML=txt;
 }
}
xmlhttp.open("GET",url,true);
xmlhttp.send();
}
</script>
</head>
<body>
<div id="txtCDInfo">
<button onclick="loadXMLDoc('http://localhost:8081/sample.xml')">GetDetails</button>
</div>
</body>
</html>

xmlファイルデータを表示するための上記のコード行を記述しました。これはiisサーバーにデプロイされました。xmlファイルにアクセスしたいときはいつでも、上記のエラーが表示されます。間違った間違いをどこで行っていますか。urlの位置に書き込む必要があります。 xmlファイルを取得するため。sample.xmlのようなファイル名のみを書き込むと、Accessdeniedのようなエラーが表示されます。

4

1 に答える 1

3

これは同一生成元ポリシーによるものです。ajaxを使用して外部サイトを呼び出すことはできません。本当に使いたいのなら、JSONPを使わなければなりません。または、これにサーバーサイドプロキシを使用できます。つまり、サーバー側で外部サイトを呼び出し、そのWebサービスに対してajax呼び出しを実行します。詳細については、次の質問に対する私の回答を参照してください。 $。ajax呼び出しはIE8で正常に機能し、FirefoxおよびChromeブラウザーでは機能しません。

于 2013-03-25T07:05:14.817 に答える