通过单击Amazon S3上托管的链接更改jPlayer上的歌曲

时间:2011-11-21 02:22:03

标签: ruby-on-rails ruby amazon-s3 jplayer

大家好,感谢您提前提供任何帮助。

我在rails应用程序上有一个ruby,我试图通过jPlayer传输音频,jPlayer托管在S3上。到目前为止,我上传文件或使用内置播放器播放音频文件,甚至使用S3上的歌曲初始化jPlayer都没有问题。当我改变歌曲时会出现问题。

我像这样初始化jPlayer:

$('a.html5').click(function() { 

    var url = $(this).attr('href');  

    $("#jquery_jplayer_1").jPlayer({
        ready: function (event) {
            $(this).jPlayer("setMedia", {
                mp3: url
            });
        },
        swfPath: "javascripts",
        supplied: "mp3",
        wmode: "window"
    });
    return false;  
});  

其中mp3:url指向S3 URL(这一切都很好)。

这允许我从链接列表中选择一首歌曲,它会加载并开始播放没有问题。

问题在于,当我尝试更改歌曲时,我收到了access-control-allow-origin错误。所以我尝试了以下内容:

$('a.html5').click(function() {

    var url = $(this).attr('href');  

    $("#jquery_jplayer_1").jPlayer("setMedia", mp3: url).jPlayer("play");

    return false;  
  });

这仍然给我一个access-control-allow-origin错误。我一直在靠墙撞击几个小时试图解决这个问题。

所以基本上总结一下,我可以初始化jPlayer并播放一首歌很好,但是当我想改变一首歌时,access-control-allow-origin错误毁掉了我的一天。

有什么想法吗?

2 个答案:

答案 0 :(得分:8)

看来唯一的问题是mp3周围缺少括号:jPlayer的url部分(“setMedia”....

所以应该是(...).jPlayer("setMedia", {mp3: url}).(...)

答案 1 :(得分:2)

经过大量搜索后,它也可能是其中一种解决方案。

 function songs(json1) {
$("#jquery_jplayer_1").jPlayer("destroy"); //this will destroy previous jplayer content and then if you again call this function it will add the new url of you audio song to the jplayer
var audio_url_inside = json1.audio_url;
$('#jquery_jplayer_1').jPlayer({
ready:function (event) {
$(this).jPlayer("setMedia", {
mp3:audio_url_inside,
oga:audio_url_inside
}).jPlayer("play"); //attemp to play media
},
swfPath:"http://www.jplayer.org/2.1.0/js",
supplied:"mp3, oga"
});
}

:希望它会有所帮助。