为什么我会得到Uncaught SyntaxError:意外的令牌非法

Why do I get Uncaught SyntaxError: Unexpected token ILLEGAL

本文关键字:意外 令牌 非法 SyntaxError Uncaught 为什么      更新时间:2023-09-26

我想使用AJAX和SoundCloud API来获取用户的轨迹。

jQuery.ajax({
              url: 'http://api.soundcloud.com/resolve?url=http://soundcloud.com/[SOME USER]/tracks/&format=json&consumer_key=[MY KEY]&callback=?'
            , dataType: 'jsonp'
            , success: function( data ) {
                console.log( data );
            }
            });

我可以看到chrome获得了json数据,但我得到了错误

Uncaught SyntaxError: Unexpected token ILLEGAL

在控制台中。

问题可能是json文件是一个json数组。这可能是错误吗?如果是,如何将数组转换为单个对象?

问题是,track id#159500192('Summer Chords Pt. 2' (Electro House Mix))中的描述字段在JavaScript字符串中有不可见的不合法字符,因此JavaScript解析器在尝试将JSONP响应作为脚本运行时会阻塞。SoundCloud在通过JSONP提供内容时应对这些值进行编码。

因为SoundCloud支持CORS,所以您根本不需要使用JSONP。您可以通过删除callback=?参数并使用dataType: json(而不是jsonp)来直接请求文件:

jQuery.ajax({ url: "https://api.soundcloud.com/resolve?url=http://soundcloud.com/[USER]/tracks/&format=json&consumer_key=[KEY]",
              dataType: 'json',
              success: function(d) { console.log(d); }
});