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