为什么我得到Uncaught SyntaxError:意外的令牌ILLEGAL

时间:2014-08-28 11:18:15

标签: javascript jquery ajax json soundcloud

我想使用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数组。这可能是错误吗? 如果是,我如何将数组转换为单个对象?

1 个答案:

答案 0 :(得分:4)

问题是,跟踪标识#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); }
});