2014-01-07 208 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