获得JSON数据并将其放入HTML标记中。

3
我正在尝试解决与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>

1
显然,oses是一个数组的数组,没有posts属性。 - Fabrício Matté
1
最好的方法是将对象转储到控制台以探索其内容:在 getJSON() 回调中使用 console.log(data) - Michael Berkowski
请查看此链接:https://dev59.com/Keo6XIcBkEYKwwoYTzNK - Michel Feldheim
$(function() { еТМ $(document).ready(function() { жШѓе§ЪдљЩзЪДпЉЪhttps://dev59.com/questions/aHE85IYBdhLWcg3wr1ge - Andre Figueiredo
2个回答

1
这是一个跨域问题。检查控制台。你需要在服务器端编写代理来解决这个问题。根据你的服务器端语言,你可以谷歌一下代理代码片段。

0

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

因此,getJSON失败并抛出异常。请参见"No 'Access-Control-Allow-Origin' header is present on the requested resource"

当发生这种情况时,您可以使用CORS进行解决。

但是,为了使此解决方法有效,您需要使服务器启用CORS,而不幸的是sourceforge没有启用。

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

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

请参见以下示例:

enter image description here


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接