2013-08-25 85 views
1

我遇到了一個小問題,即使經過一小時的嘗試,我無法解決它。我正在使用JW Player播放一首歌曲,並且它的工作原理正確。播放器下方是歌曲列表,點擊列表中的歌曲後,我會使用AJAX重新加載包含播放器的div,並將該div下方的javascript更改爲播放新歌曲。 div加載正常,但播放器在AJAX調用後根本不加載。沒有錯誤,只是玩家不能第二次實例化。通過AJAX加載javascript元素

這裏是顯示播放器的代碼:

<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呼叫播放器消失後,加載播放器的文本出現。這裏是玩家所在的網址: contestlancer.com/davidicus

回答

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設置爲文件名,但您的頁面可能正常。

+0

嗨謝謝你回答,我該怎麼辦?因爲通過AJAX,我將無法將腳本中的innerHTML。 –

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); 
    } 
    } 

希望這樣可以節省別人」時間。 Registers Ahmar

+0

很高興你的工作! – emaxsaun