获取JSON数据并放入HTML标签中
我正在尝试解决有关 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>
这是一个跨域问题。检查控制台。您需要在服务器端编写代理才能解决。根据您的服务器端语言,您可以 Google 一个代理代码片段。
您正在尝试执行跨浏览器请求: http://en.wikipedia.org/wiki/Same-origin_policy 。
因此,
getJSON
失败并引发异常。请参阅
“请求的资源上不存在‘Access-Control-Allow-Origin’标头”
发生这种情况时,您可以 使用 CORS 解决问题。
但是对于此解决方法,您 需要服务器启用 CORS ,但不幸的是 sourceforge 没有启用。
您可以通过检查响应标头来查看。它具有键
Access-Control-Allow-Origin:*
。
通常,您可以通过访问浏览器中的开发人员工具来执行此操作:
- 选择“网络”选项卡。
- 识别 JSON 页面并选择。
- 打开“标头”选项卡
- 转到“响应标头”部分。
查看示例: