2016-11-09 144 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();