SoundCloud API提供“Uncaught SyntaxError:Unexpected token:”错误

时间:2016-12-16 23:55:03

标签: javascript jquery html jsonp soundcloud

在控制台中,它给出了错误“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);
};

4 个答案:

答案 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);

这样的异步Ajax请求

将其称为脚本肯定会失败...
因为它不是剧本。

尝试运行代码段

&#13;
&#13;
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);
});
&#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&amp;client_id=08f79801a998c381762ec5b15e4914d5"></script-->
	</head>
	<body>
        <h2>hellooo <span id="json_usage"></span> !</h2>
    </body>
</html>
&#13;
&#13;
&#13;

在上面,生成的json放在json变量中,然后控制台记录。

答案 3 :(得分:0)

很抱歉,您在使用SoundCloud API时遇到了JSONP响应问题。这是由于一个错误导致它在过去几天投入生产。我们刚刚部署了一个修补程序,因此如果指定callback参数,此端点现在将返回有效的JSONP响应,而不仅仅是JSON。抱歉混乱!