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