我正在尝试将SoundCloud网址解析为曲目ID,因此我稍后可以将曲目ID与SC.stream()
一起使用。
此代码有效,但由于它是异步的,因此它不能与我的其余代码一起使用:
$.getJSON(
'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId,
function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
}
);
我试图用.ajax()
做同样的事情,所以它可以是异步的,但我无法让它发挥作用。控制台显示GET错误。
以下是代码:
$.ajax({
url: 'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId,
dataType: 'json',
async: false,
success: function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
}
});
如何让我的ajax代码正常工作?或者我这样做是错的?试图寻找答案,但没有找到任何有用的东西。感谢。
编辑:以下是我的其余代码:http://codepen.io/etzolin/pen/Jonqe
答案 0 :(得分:0)
由于我正在进行跨域调用,因此我无法使用async: false
,而且似乎无论如何我都不应该这样做。
我使用$.getJSON()
解决了我的问题,只是让我的音乐流代码成为一个函数,因此它可以在success
回调运行:
$.getJSON(
'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId, function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
streamTrack();
}
);
答案 1 :(得分:0)
根据您的答案,因为您正在进行跨域调用,您可以在.ajax调用中设置一个选项,如下所示:
$.ajax({
url: 'http://api.soundcloud.com/resolve.json?url=' + trackUrl + '&client_id=' + clientId,
dataType: 'json',
async: false,
crossDomain: true,
success: function(result) {
console.log('Track ID: ' + result.id);
setTrackId(result.id);
}
});
此处有一个将crossDomain设置为true的选项。它从版本1.5开始提供