JSON Feed显示在网站上

时间:2011-12-13 20:28:02

标签: javascript json

我试图在我正在处理的网站上加载JSON Feed。我在网上看过,似乎有很多例子,但关于如何将远程网页的JSON作为对象返回的信息很少。

目前我正在使用以下测试代码。

我正试图进入我的网页的JSON提要是; http://www.wowprogress.com/guild/us/frostmourne/Group+Therapy/rating.tier13_10/json_rank

目前的目标只是查看返回的JSON Feed,因此我知道它的工作原理,所以我一直在玩下面的代码段。

<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>

任何帮助将不胜感激,或进一步调查的正确方向。

谢谢:)

2 个答案:

答案 0 :(得分:1)

首先,永远不要使用eval。它非常不安全。

而是使用JSON.parse(your_json)将数据转换为对象文字。当你完成它并希望打包它以进行传输然后JSON.stringify(your_json);

答案 1 :(得分:1)

我认为您遇到了跨域问题。默认情况下,浏览器不允许您使用XHR(ajax)来获取位于与主机页面不同的域上的文档(这也包括子域)。

有一些解决方法:

  • CORS:这可能不是一个选项,因为它需要您不拥有的服务器上的配置

  • JSON-P:如果远程服务器了解它,这可能是一个选项。它本质上是一个包含在函数调用中的JSON响应,因此您可以将其作为普通JS包含在页面上。

  • 代理:在服务器上创建代理,以便您可以向同一个域发出ajax请求。 Ben Alman有一个简单的例子here

简而言之,您将需要另一种传输机制,以便能够通过JS将远程文档加载到您的页面上。

我希望有所帮助!欢呼声。