SoundCloud API 给出“Uncaught SyntaxError: Unexpected token:”错误
Posted
技术标签:
【中文标题】SoundCloud API 给出“Uncaught SyntaxError: Unexpected token:”错误【英文标题】:SoundCloud API gives "Uncaught SyntaxError: Unexpected token : " error 【发布时间】:2017-05-02 19:38:40 【问题描述】:在控制台中,它给了我错误“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);
;
【问题讨论】:
为什么要将 JSON 文件作为脚本导入? JSON 不是 javascript。您的意思是使用 JSONP(即)? 实际上这是代码的一部分,我们有一个自定义音频播放器,使用 react for soundcloud 在其中我们得到 JSONP 响应,一切正常,但从今天开始出现错误。 为什么有人在这里给减分,我可能描述得不好,但问题是什么,我的代码中有回调函数。 我们遇到了同样的问题,我认为他们的 API 一定发生了一些变化...... 【参考方案1】:很抱歉,您在处理来自 SoundCloud API 的 JSONP 响应时遇到了问题。这是由于最近几天将其投入生产的一个错误。我们刚刚部署了一个修复程序,因此如果您指定 callback
参数,此端点现在将返回有效的 JSONP 响应而不仅仅是 JSON。很抱歉造成混乱!
【讨论】:
【参考方案2】:我得到了问题的原因,早期的 soundcloud 在 jsonp 中响应响应,但现在即使我通过了 JsonP 回调函数,它们也提供 JSON。我不得不发出 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();
【讨论】:
你是如何解决这个问题的?从昨天开始我就遇到了同样的问题。 我有同样的问题,请提供您的解决方案。谢谢! 为我的无知道歉,但是这段代码去哪里了?我们只是将 sc-player 类用于自定义小部件。此代码是否在 sc-player.js 中?而且似乎只有 70% 的曲目受到影响——有些播放正常。这是为什么呢?【参考方案3】:我想你想使用这个外部生成的 json...
“获取”它的一种方法是使用异步 ajax 请求,例如 $.get(url,callback);
将其作为脚本调用肯定会失败... 因为它不是脚本。
尝试运行 sn-p!
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);
);
<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>
在上面,生成的 json 被放置在 json
变量中,然后控制台记录。
【讨论】:
【参考方案4】:以下脚本标记需要源代码中的 JavaScript 代码,而不是 JSON。
<script src="file.js"></script>
【讨论】:
以上是关于SoundCloud API 给出“Uncaught SyntaxError: Unexpected token:”错误的主要内容,如果未能解决你的问题,请参考以下文章
Soundcloud API - 轨道上的地理标签过滤返回 503 服务不可用
html jQuery,AJAX:即时AJAX搜索(Bonus:SoundCloud API搜索)
如何使用 Soundcloud api 获取流到 html5 音频播放器?
有没有办法强制使用SoundCloud javascript流API的MP3块?
XMLHTTPRequest 错误:不推荐使用主线程上的同步 XMLHttpRequest ...(SoundCloud API)