2016-11-09 142 views
0

我想讓它如此,當你點擊一個按鈕時,它會回顯出一個人的名字從ajax到一個php數組&然後播放那裏有選擇的歌曲。點擊時播放音頻文件

這是我現在所擁有的;

$(document).ready(function() { 
    $(".button").on("click", function() { 
     $.ajax({ 
      url: "includes/ajax.php" 
     }).done(function(msg) { 
      console.log(msg); 
      $(".person").html(msg); 
      if (msg == "name") { 
       $('a.click').append("<audio class='audio' src='includes/songs/song.mp3' autoplay></audio>"); 
      } else { 
       $('audio').remove(); 
      } 
     }); 
    }); 
}); 

這並不工作,但那就意味着我就必須有10個不同的if陳述,我不想做的事。

這樣做的最好方法是什麼?

謝謝!

+1

爲什麼你需要10個不同的'if'報表?在每次點擊時進行相同的AJAX調用似乎也有點多餘。撥打電話一次並緩存結果 –

+0

由於列表中有10個人,因此它會從數組中隨機選擇一個人並回顯姓名。 –

+0

好的,但是這並沒有意義,因爲你每次都在做同樣的要求。它如何知道顯示哪個名字? –

回答

0

你既可以創建一個動態鏈接:

$().append("<audio src='/songs/"+msg+".mp3'>"); 

或者你可以使用一個數據庫解決音頻,並通過動態的URL返回給客戶端,或者你可以創建一個對象存儲數據:

var songof={ 
tim:"/songs/a.mp3", 
bob:... 
} 

而不是做:

url=songof[msg]; 

或者你可以解決這首歌DYNAM (你必須擅長php)

<audio src="resolvesong.php?tim"> 

PS:如果一個人被點擊兩次會發生什麼?比歌曲下載和添加多次。因此,這將是存儲下載的歌曲是個好主意:

var songof={}; 
newsong=document.createElement("audio"); 
newsong.src="url.mp4"; 
document.body.appendChild(newsong); 
songof["tim"]=newsong; 

要發揮做

songof["tim"].play();