2014-01-07 158 views
1

我只是想获取XML数据,并使用jscript在HTML页面中显示它。据this tutorial我写了一个示例代码是xml数据不显示在HTML页面

<script> 
    xmlDoc=loadXMLDoc("http://api.openweathermap.org/data/2.5/weather?q=London&mode=xml"); 
    x=xmlDoc.getElementsByTagName('city'); 

    for(i=0;i<x.length;i++) 
     { 
      att=x.item(i).attributes.getNamedItem("name"); 
      document.write(att.value + "<br>"); 
     } 
    </script> 

    <script > 
     function loadXMLDoc(dname) 
     { 
      if (window.XMLHttpRequest) 
      { 
       xhttp=new XMLHttpRequest(); 
      } 
      else 
      { 
       xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
      } 
     xhttp.open("GET",dname,false); 
     xhttp.send(); 
     return xhttp.responseXML; 
     } 
    </script> 

我在HTML页面输出应该是“伦敦”。但它什么也没有显示。或者请告诉我的错误。

+0

其实你的代码工作正常。 http://jsfiddle.net/remus/G7eSk/ – brandonscript

+0

@demo_Ashif你在测试什么浏览器?这段代码对我来说看起来很好。 – Rell

+0

thnx小提琴。但我现在应该怎么做?我没有收到数据。 :( –

回答

0

我认为你正在运行到臭名昭著"same-origin policy" problem

总之,在AJAX可以”业务t加载来自远程服务器,应用程序或网站的XML内容(这意味着XML数据不能源自你自己的域以外的任何域)

有几个解决此问题的方法例如使用server-side proxy而不是XML使用JSONp或使用CORS来破坏您的客户端应用在运行该代码时所在的沙箱(如果用户的浏览器和您要求支持的服务器堆栈) 。

+1

CORS不是问题;它是一个开放的API,允许跨源请求 – brandonscript

+0

是的,它是一个开放的API –

+0

CORS可能不是上述问题,它现在支持WeatherMap API:http://bugs.openweathermap。 org/issues/152 所以这可能是你的浏览器版本的问题,因为@ r3mus提到它对JSFiddle来说工作正常 - FF26。 – bcmoney