1

小さな問題があり、1 時間試しても解決できません。JW Player を使用して曲を再生していますが、問題なく動作します。プレーヤーの下には曲のリストがあり、リスト内の曲をクリックすると、プレーヤーを含む div を AJAX でリロードし、その div の下の JavaScript を変更して新しい曲を再生します。div は正しく読み込まれますが、AJAX 呼び出しの後、プレーヤーはまったく読み込まれません。プレーヤーが 2 回目にインスタンス化できないというエラーはありません。

プレーヤーを表示するコードは次のとおりです。

<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プレーヤーが消え、プレーヤーをロードしているテキストだけが表示された後...が表示されます。プレイヤーがいる URL は次のとおりです: contestlancer.com/davidicus

4

2 に答える 2

1

InnerHTML はスクリプトの言い訳にはなりません。PHP は、音楽またはビデオ ファイルへのパスのみを応答し、jwplayer を再セットアップする必要があります。

すみませんが、私は夕食を食べに出かけていました;-)

あなたのページはどの音楽ファイルを再生するかをすでに知っているので、あなたのページはあなたのphpからhtmlソースを取得するためにajaxを必要としないと思います。

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 に答える
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 に答える