2011-12-13 66 views
1

我試圖讓JSON供稿在我正在處理的網站上加載。我在網上查了一下,似乎有很多例子,但關於如何將遠程網頁的JSON作爲對象返回的信息很少。網站上的JSON供稿顯示

目前,我有下面的測試代碼我的工作。

JSON供稿我試圖進入我的網頁是; http://www.wowprogress.com/guild/us/frostmourne/Group+Therapy/rating.tier13_10/json_rank

當前目標只是查看返回的JSON提要,所以我知道它的工作,所以我一直在玩下面的代碼片段。

<html> 
<title></title> 
<head> 
<script type="text/javascript"> 
    var xhttp = new XMLHttpRequest();  
var wowprogress 
//var xhttp = new ActiveXObject("Microsoft.XMLHTTP"); // Commented out currently, use for IE 
xhttp.open("GET","http://www.wowprogress.com/guild/us/frostmourne/Group+Therapy/rating.tier13_10/json_rank",false); 
xhttp.send(); 

var myJSONString = xhttp.innerTEXT; 
alert(myJSONString);  

var myObject = eval("(" + myJSONString + ")"); 
var myValue = myObject.realm_rank; 
    alert(myValue); 

    </script> 
    </head> 
    <body> 
    </body> 
    </html> 

任何幫助將不勝感激,或進一步調查的正確方向。

謝謝:)

+1

相同的原產地策略阻止您向另一個域發出AJAX請求。您可能必須實施代理或JSONP包裝。 – Daff 2011-12-13 20:36:15

回答

1

,我認爲你正在運行到跨域問題。瀏覽器默認情況下不允許您使用XHR(ajax)來獲取位於與主機頁面不同的域(這也包括子域)的文檔。

有一些解決方法:

  • CORS:這可能不是一種選擇,因爲它需要在服務器上配置,你沒有自己

  • JSON-P:這可能是一種選擇,如果遠程服務器理解它。它本質上是一個包含在函數調用中的JSON響應,因此您可以將它作爲普通的JS包含在您的頁面中。

  • 代理服務器:在服務器上創建一個代理,這樣就可以使Ajax請求同一個域。本·阿爾曼有一個簡單的例子here

總之,您將需要另一種傳輸機制,以便能夠通過JS將遠程文檔加載到您的頁面上。

我希望有幫助!乾杯。

1

首先,不要使用eval。它可怕的不安全。

而是使用JSON.parse(your_json)將數據轉換爲對象文本。當你完成它,並想要打包它的運輸,然後JSON.stringify(your_json);