2016-11-09 6 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:1人で2回クリックするとどうなりますか?曲がダウンロードされ、複数回追加されるよりも。

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

songof["tim"].play(); 
関連する問題