0

可能重复:
从 localhost 或 file:// 访问 JSON 服务

<script src="http://code.jquery.com/jquery-1.8.3.min.js"></script>
<script>
$.getJSON('http://game4u.comuf.com/songs.json', function(data) { 

  var output = data.music[0].url; 
  document.getElementById("placeholder").innerHTML = output;

});
</script>

但是当我运行它时,我的 JSON 文件( music[0].url )没有显示在浏览器中。我在本地运行 HTML,而不是在与网站相同的服务器上。

4

1 回答 1

2

我在本地运行 HTML,而不是在与网站相同的服务器上。

那将是问题所在。getJSON是一个“ajax”调用,并且受Same Origin Policy限制。您的本地文件系统与http://game4u.comuf.com/songs.json(尽管一些浏览器将本地文件系统视为匹配任何来源;大多数不匹配)的来源不同。

如果您在 处控制内容http://game4u.comuf.com/songs.json,则可以使用JSON-P代替 JSON。JSON-P 围绕 SOP 工作。另一个选项是Cross-Origin Resource Sharing,它还要求服务器端做一些事情(在这种情况下,授予对源“null”的访问权限)并且还要求您使用支持它的浏览器(所有现代浏览器都这样做,仅限 IE9如果您解决它要求您使用XDR而不是XHR对象的事实;这是 jQuery 不为您做的事情,尽管有插件可以做)。


另外,正如 Musa 指出的那样,您的 JSON 无效。如果您更正了 URL 中的反斜杠(它们应该是斜杠 [ /],而不是反斜杠 [ \])并且如果您删除了,列表末尾的尾随,这在 JSON 中是无效的,这将是有效的。

于 2013-01-04T06:45:24.817 回答