【发布时间】:2018-05-03 00:56:06
【问题描述】:
我正在使用 spotify api 搜索播放列表,然后将它们显示在我的移动应用程序中。我正在使用 Ajax 从工作正常的 api 获取信息,但我似乎无法用结果填充 div 并使应用程序可以播放音乐 sn-ps,因为它不想允许事件监听器。您将无法看到所有使用的变量,但在此代码之前的所有内容都可以正常工作。
var audioObject = null;
//Spotify page
$(document).on('pagecreate', '#spotify', function(){
console.log("Spotify");
$('#search').on('click', function() {
//e.preventDefault();
searchstring = cweather;
if (!searchstring){
console.log('no input');
return;
}
console.log(searchstring);
searchPlaylist(searchstring);
});
});
var userId;
var searchPlaylist = function () {
$.ajax({
url: 'https://api.spotify.com/v1/search',
headers: {
Authorization: 'Bearer ' + spotifyAccessToken,
},
data: {
q: searchstring,
type: 'playlist',
market: 'GB',
offset: '0',
limit: '5',
},
success: function (response) {
console.log(response);
var items = response.playlists.items;
var resultsintohtml = '';
$.each(items, function(index) {
var id = items[index].id;
var name = items[index].name;
//var image = items[index].image[1].url;
userId = items[index].owner.id;
console.log(id, name, userId);
resultsintohtml += '<div style="backgroundColor="red"" data-album-id="' + id + '" class="cover"></div>';
});
console.log(resultsintohtml);
document.getElementById("results").innerHTML = resultsintohtml;
addclickevents();
}
});
};
var fetchTracks = function (playlistsId, userId, callback) {
$.ajax({
url: 'https://api.spotify.com/v1/users/' + userId + '/playlists/' + playlistsId,
headers: {
Authorization: 'Bearer ' + spotifyAccessToken,
},
success: function (response) {
console.log(response);
callback(response);
}
});
};
var addclickevents = function () {
$('.cover').click(function (e){
console.log('get song');
var target = $(this);
if (target.hasClass('playing')) {
audioObject.pause();
} else {
if (audioObject){
audioObject.pause();
}
fetchTracks(target.data('playlist-id'), function (data) {
audioObject = new
Audio(data.tracks.items[0].preview_url);
audioObject.play();
target.addClass('playing');
});
audioObject.addEventListener('pause', function(){
target.removeClass('playing');
});
}
});
};
使用此代码时,出现以下错误: Errors 我试过重命名变量,但我得到了同样的错误。我已经仔细检查了 spotify 中是否缺少任何信息,但我已经使用了所有可用的 ID。提前致谢。
【问题讨论】:
-
在将音频分配给
audioObject之后,将绑定移动到fetchTracks()中,您将不会收到错误消息(在暂停轨道时,playing类将从元素中删除)。跨度> -
不太确定代码的哪一部分是“绑定”。我对术语不太了解,抱歉。
-
addEventListener通常称为绑定。您在事件上绑定了一些功能。这需要在您为变量分配新音频后发生,这发生在fetchTracks中。那是你想要绑定的时候。请参阅我的答案的补充内容。
标签: javascript html spotify phonegap