使用Javascript无法访问JSON文件

时间:2013-01-04 06:42:40

标签: javascript json

  

可能重复:
  Accessing JSON service from localhost or file://

<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,而不是在与网站相同的服务器上运行。

1 个答案:

答案 0 :(得分: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中无效。