1

我有一个小问题,即使经过一个小时的尝试,我也无法解决它。我正在使用 JW Player 播放歌曲,它工作正常。播放器下方是歌曲列表,单击列表中的歌曲后,我会使用 AJAX 重新加载包含播放器的 div,并更改该 div 下方的 javascript 以播放新歌曲。div 正确加载,但播放器在 AJAX 调用后根本不加载。没有错误只是玩家无法第二次实例化。

这是显示播放器的代码:

<div id="myDiv"><div id="myElement2">Loading the player...</div>

<script type="text/javascript">
    jwplayer("myElement2").setup({
    file: "uploads/maid.mp3",
        title: "Sintel Movie Trailer",

      width: '100%',
      skin: "six/six3.xml",
      height:30

    });
</script></div>

这是加载新歌曲时发生的情况:

document.getElementById("myDiv").innerHTML='';
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

这是来自单独的 php 文件的响应文本:

<div id="myElement2">Loading the player...</div>
<script type="text/javascript">
    jwplayer("myElement2").setup({
    file: "newfilename.mp3",
        title: "file name",

      width: '100%',
      skin: "six/six3.xml",
      height:30

    });
</script>

但是在 AJAX Call 播放器消失后,只有加载播放器的文本...出现。这是玩家所在的网址: contestlancer.com/davidicus

4

2 回答 2

1

经过一番研究,我发现即使脚本是通过 JS 调用附加的,它也不会被执行,所以你必须执行它。所以任何有同样问题的人请注意,通过 AJAX 加载的脚本必须通过 javascript 中的 eval 函数执行。

因此,在我的内容 AJAX 文件中,我对脚本进行了 id 测试:

<script type="text/javascript" id="testing">

然后在 JS 函数中我这样做了:

if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML='';
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    eval(document.getElementById('testing').innerHTML);
    }
  }

希望它可以节省别人的时间。问候艾哈迈尔

于 2013-08-25T09:23:47.407 回答
1

InnerHTML 不会原谅脚本。您的 php 应该只响应音乐或视频文件的路径,然后重新设置 jwplayer。

抱歉,我出去吃晚饭了 ;-)

我认为您的页面不需要 ajax 从您的 php 获取 html sourp,因为您的页面已经知道要播放哪个音乐文件。

我不完全了解 jwplayer,但试试这个代码而不是你原来的loadXMLDoc().

function loadXMLDoc(str) {
    jwplayer("myElement2").setup({
        file: str,
        title: str,
        width: '100%',
        skin: "six/six3.xml",
        height: 30
    });
}

title被设置为文件名,但您的页面可能没问题。

于 2013-08-25T08:58:04.540 回答