开发者问题收集

获取JSON数据并放入HTML标签中

2012-11-24
1836

我正在尝试解决有关 JSON 数据的问题(获取并发布)。下面我发布了不起作用的代码,但我不知道为什么?我用 Firebug 检查了一下,它说没问题: 200 OK sourceforge.net 1.4 KB 216.34.181.60:80

我正在尝试做的是从 sourceforge 项目获取一些统计数据并将其放入 div 标签中。

链接是有效的 json( http://sourceforge.net/projects/rdss/files/stats/json?start_date=2010-12-01&end_date=2012-11-24 )。

<html>
  <head>...</head>
  <body>
    <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script>
    <script type="text/javascript">
      $(function() {
        $(document).ready(function() {
          $.getJSON("http://sourceforge.net/projects/rdss/files/stats/json?start_date=2010-12-01&end_date=2012-11-24", function(data) {
            $.each(data.posts, function(i,data) {
              var div_data = "<div>"+data.oses+"</div>";
              $(div_data).appendTo("#testjson");
            });
          });
          return false;
        });
      });
    </script>
    <div id="testjson"></div>
  </body>
</html>
2个回答

这是一个跨域问题。检查控制台。您需要在服务器端编写代理才能解决。根据您的服务器端语言,您可以 Google 一个代理代码片段。

geniuscarrier
2012-11-29

您正在尝试执行跨浏览器请求: http://en.wikipedia.org/wiki/Same-origin_policy

因此, getJSON 失败并引发异常。请参阅 “请求的资源上不存在‘Access-Control-Allow-Origin’标头”

发生这种情况时,您可以 使用 CORS 解决问题。

但是对于此解决方法,您 需要服务器启用 CORS ,但不幸的是 sourceforge 没有启用。

您可以通过检查响应标头来查看。它具有键 Access-Control-Allow-Origin:*

通常,您可以通过访问浏览器中的开发人员工具来执行此操作:
- 选择“网络”选项卡。
- 识别 JSON 页面并选择。
- 打开“标头”选项卡
- 转到“响应标头”部分。

查看示例:

在此处输入图像描述

Andre Figueiredo
2014-02-28