我正在为我的网络应用制作音乐播放器。用户将一些mp3文件上传到服务器后,播放列表将通过AJAX调用自动生成数据库。我找到了一个简单的jquery插件音乐播放器here
如果我在我的HTML中手动包含文件引用,那就完美了:
<div id="playlist">
<div href="./media/Maria (Extended remix) - Blondie .mp3" style="width: 400px;" class="item">
<div>
<div class="fr duration">02:06</div>
<div class="btn play"></div>
<div class="title"><b>Blondie</b> - Maria</div>
</div>
<div class="player inactive"></div>
</div>
但它不是我的解决方案,因为服务器中有数百个.mp3文件。所以,我决定通过ajax调用生成文件列表,并使用jquery将其放入#playlist中。像这样:
function refresh_song_list()
{
$.ajax({
type: 'GET',
url: 'profile/get_song',
dataType: 'json',
success: function(data) {
var str='';
for(i=0;i<data.length;i++)
{
str = str + ('<div href="'+ data[i][song_url]+'" style="width: 400px;" class="item"><div><div class="fr duration">02:06</div><div class="btn play"></div><div class="title"><b>'+ data[i]['artist']+'</b> '+ data[i]['song_title'] +'</div></div><div class="player inactive"></div></div>');
}
$('#playlist').html(str); //this line add the songlist(playlist) into the #playlist div
}
});
}
然后,为了使播放列表可播放,我将此代码(根据插件指令)放在jquery文档就绪范围内:
$("#playlist").playlist(
{
playerurl: "js/jquery/jquery-plugins/drplayer/swf/drplayer.swf"
}
);
问题是,播放列表成功加载了每个项目的播放按钮,但它不会播放歌曲。我的代码中有错误吗?请帮帮我们。谢谢
答案 0 :(得分:2)
我的猜测是,因为您使用ajax填充播放列表,.playlist()
初始值设定项不会看到这些元素,因为它们尚不存在(在您声明的文档就绪范围内)。
而是在你的ajax回调中调用.playlist()
:
success: function(data) {
var str='';
for(i=0;i<data.length;i++)
{
str = str + ('<div href="'+ data[i][song_url]+'" style="width: 400px;" class="item"><div><div class="fr duration">02:06</div><div class="btn play"></div><div class="title"><b>'+ data[i]['artist']+'</b> '+ data[i]['song_title'] +'</div></div><div class="player inactive"></div></div>');
}
$('#playlist').html(str); //this line add the songlist(playlist) into the #playlist div
$("#playlist").playlist(
{
playerurl: "js/jquery/jquery-plugins/drplayer/swf/drplayer.swf"
}
);
}
答案 1 :(得分:2)
尝试
function refresh_song_list()
{
$.ajax({
type: 'GET',
url: 'profile/get_song',
dataType: 'json',
success: function(data) {
var str='';
for(i=0;i<data.length;i++)
{
str = str + ('<div href="'+ data[i][song_url]+'" style="width: 400px;" class="item"><div><div class="fr duration">02:06</div><div class="btn play"></div><div class="title"><b>'+ data[i]['artist']+'</b> '+ data[i]['song_title'] +'</div></div><div class="player inactive"></div></div>');
}
$('#playlist').html(str); //this line add the songlist(playlist) into the #playlist div
bindPlaylist();
}
});
}
function bindPlaylist()
{
$("#playlist").playlist(
{
playerurl: "js/jquery/jquery-plugins/drplayer/swf/drplayer.swf"
}
);
}