在控制台中,它给出了错误“Uncaught SyntaxError:Unexpected token:”,但如果我在浏览器中访问直接的SoundCloud URL,那么它将提供有效的JSON。之前这段代码工作正常,今天这个问题就开始了。
<html>
<head>
<script src="https://api.soundcloud.com/resolve.json?url=https://api.soundcloud.com/tracks/251912676/?secret_token=s-EkyTy&client_id=08f79801a998c381762ec5b15e4914d5"></script>
</head>
<body>
<h2>hellooo</h2>
</body>
</html>
更新
下面是我提出问题的实际代码,例如我刚刚创建的html。
SoundCloud.prototype._jsonp = function (url, callback) {
var target = document.getElementsByTagName('script')[0] || document.head;
var script = document.createElement('script');
var id = 'jsonp_callback_' + Math.round(100000 * Math.random());
window[id] = function (data) {
if (script.parentNode) {
script.parentNode.removeChild(script);
}
window[id] = function () {};
callback(data);
};
script.src = url + (url.indexOf('?') >= 0 ? '&' : '?') + 'callback=' + id;
target.parentNode.insertBefore(script, target);
};
答案 0 :(得分:1)
我得到了问题的原因,早期的soundcloud在jsonp中响应响应,但现在他们提供JSON,即使我传递了JsonP回调函数。我不得不提出ajax请求来修复它。
我使用以下代码来修复它。
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
callback( JSON.parse(this.responseText) );
}
};
xhttp.open("GET", url, true);
xhttp.send();
答案 1 :(得分:0)
以下脚本标记需要源代码中的JavaScript代码而不是JSON。
<script src="file.js"></script>
答案 2 :(得分:0)
我想你想要使用这个外部生成的json ......
获得&#34;获得&#34;它正在使用像$.get(url,callback);
将其称为脚本肯定会失败...
因为它不是剧本。
尝试运行代码段
var url = "https://api.soundcloud.com/resolve.json?url=https://api.soundcloud.com/tracks/251912676/?secret_token=s-EkyTy&client_id=08f79801a998c381762ec5b15e4914d5"
var json;
$.get(url,function(result){
json = result;
// show in console
console.log(JSON.stringify(json));
// Now using it...
$("#json_usage").html(json.tag_list+" and all the "+json.permalink);
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<html>
<head>
<!--script src="https://api.soundcloud.com/resolve.json?url=https://api.soundcloud.com/tracks/251912676/?secret_token=s-EkyTy&client_id=08f79801a998c381762ec5b15e4914d5"></script-->
</head>
<body>
<h2>hellooo <span id="json_usage"></span> !</h2>
</body>
</html>
&#13;
在上面,生成的json放在json
变量中,然后控制台记录。
答案 3 :(得分:0)
很抱歉,您在使用SoundCloud API时遇到了JSONP响应问题。这是由于一个错误导致它在过去几天投入生产。我们刚刚部署了一个修补程序,因此如果指定callback
参数,此端点现在将返回有效的JSONP响应,而不仅仅是JSON。抱歉混乱!