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&amp;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&amp;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&amp;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 服务不可用

Soundcloud iOS API - 从链接播放声音

html jQuery,AJAX:即时AJAX搜索(Bonus:SoundCloud API搜索)

如何使用 Soundcloud api 获取流到 html5 音频播放器?

有没有办法强制使用SoundCloud javascript流API的MP3块?

XMLHTTPRequest 错误:不推荐使用主线程上的同步 XMLHttpRequest ...(SoundCloud API)