首頁  >  文章  >  web前端  >  利用jQuery設計一個簡單的web音樂播放器的實例分享_jquery

利用jQuery設計一個簡單的web音樂播放器的實例分享_jquery

WBOY
WBOY原創
2016-05-16 15:11:371294瀏覽

一、準備資料庫
  首先,我們設計MYSQL資料庫如下:

CREATE TABLE `songs` (
 `song_id` int(11) NOT NULL AUTO_INCREMENT,
 `url` varchar(500) NOT NULL,
 `artist` varchar(250) NOT NULL,
 `title` varchar(250) NOT NULL,
 PRIMARY KEY (`song_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

   這裡,url字段表示是mp3音樂的存放地址,artist是歌曲的演唱者,title是歌曲的名稱。我們再加入一些範例數據,如下:

INSERT INTO `songs` (`song_id`, `url`, `artist`, `title`) VALUES ('', 'http://mysongs.com/songurl.mp3', 'Artist name', 'Song name');
INSERT INTO `songs` (`song_id`, `url`, `artist`, `title`) VALUES ('', 'http://mysongs.com/anothersongurl.mp3', 'Another artist', 'Another song');
INSERT INTO `songs` (`song_id`, `url`, `artist`, `title`) VALUES ('', 'http://mysongs.com/onemoresongurl.mp3', 'One more artist', 'One more song');

二、設計HTML頁
  在完成資料庫的設計後,我們就可以開始設計HTML頁面了。這裡我們要先下載jQuery的音樂播放外掛jPlayer(http://jplayer.org/)。把下載下來的包解壓縮後,把js和skin兩個資料夾的內容放到你的應用程式的根目錄下,它們是要用到的javascript檔和CSS樣式應用檔。現在可以開始設計HTML頁了,把檔案命名為demo.html,程式碼如下:

<!DOCTYPE html PUBLIC '-//W3C//DTD XHTML 1.0 Transitional//EN' 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd'>
<html xmlns='http://www.w3.org/1999/xhtml' lang='en' xml:lang='en'>
<head>
  <title>Online radio using jQuery</title>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

  <link href="skin/jplayer.blue.monday.css" rel="stylesheet" type="text/css" />

  <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
  <script type="text/javascript" src="js/jquery.jplayer.min.js"></script>
</head>

<body>
  <div id="jquery_jplayer_1" class="jp-jplayer"></div>
    <div class="jp-audio">
      <div class="jp-type-single">
        <div id="jp_interface_1" class="jp-interface">
          <ul class="jp-controls">
            <li><a href="#" class="jp-play" tabindex="1">play</a></li>
            <li><a href="#" class="jp-pause" tabindex="1">pause</a></li>
            <li><a href="#" class="jp-stop" tabindex="1">stop</a></li>
            <li><a href="#" class="jp-mute" tabindex="1">mute</a></li>
            <li><a href="#" class="jp-unmute" tabindex="1">unmute</a></li>
          </ul>

          <div class="jp-progress">
            <div class="jp-seek-bar">
              <div class="jp-play-bar"></div>
            </div>
          </div>

          <div class="jp-volume-bar">
            <div class="jp-volume-bar-value"></div>
          </div>

          <div class="jp-current-time"></div>
          <div class="jp-duration"></div>
        </div>

        <div id="jp_playlist_1" class="jp-playlist">
          <ul>
            <li><strong id="artist">Artist</strong> - <span id="songname">Song name</span></li>
          </ul>
        </div>
      </div>
    </div>
  </div>
</body>

</html>

   以上程式碼其實很簡單,只是引入了jQuery和jPlayer插件的必須要的檔案和樣式,然後設定好播放器的外觀,這裡都是透過DIV去預先定位指定所在的層,例如播放進度條,播放的按鈕(開始/暫停),聲音的控制大小等。

三、讀取資料庫中的曲目
  接下來,我們就可以從資料庫中讀取要播放的歌曲了,本文將採用ezSQL的PHP​​開源函式庫去連接資料庫,當然你也可以用傳統的MYSQL連線方法。 ezSQL的具體用法我們就不再太多介紹了,這裡使用其實很簡單,把ez_sql_core.php和ez_sql_mysql.php兩個檔案放到專案的根目錄下即可,我們寫php檔如下,命名為getsong. php,程式碼如下:

<&#63;php

if(!empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest'){ 

  include_once "ez_sql_core.php";
  include_once "ez_sql_mysql.php";
  $db = new ezSQL_mysql('db_user','db_password','db_name','db_host'); 

  $song = $db->get_row("SELECT * FROM songs ORDER BY RAND() LIMIT 1");

  $artist = $song->artist;
  $songname = $song->title;
  $url = $song->url;
  $separator = '|';
  echo $url.$separator.$artist.$separator.$songname;
} 

&#63;>

   這裡,用rand()隨機在MYSQL中取出一條記錄(曲目),然後分別用變數保存其歌曲的名稱,歌手名稱和地址,將它們用符號「|」連接起來。而因為我們要使用ajax去呼叫這個PHP,所以注意語句:
if(!empty($_SERVER['HTTP_X_REQUESTED_WITH'])&& strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest')
   主要的目的是防止使用者在瀏覽器網址列中只是輸入例如http://www.yousite.com/getsong.php就能獲得歌曲的URL位址,只允許是透過AJAX發出的請求才予以接受。
四、最終實現完善程式碼
  最後,我們可以修改jPlayer的程式碼,讓我們的播放器運作起來,修改demo.html程式碼如下:

  <script type="text/javascript">
//<![CDATA[

$(document).ready(function(){
  $("#jquery_jplayer_1").jPlayer({
    ready: function () {
      var data = $.ajax({
       url: "getsong.php",
       async: false
       }).responseText;

      var string = data.split('|');
      $(this).jPlayer("setMedia", {
        mp3: string[0]
      }).jPlayer("play");

      $('#artist').html(string[1]);
      $('#songname').html(string[2]);
    },
    ended: function (event) {
      var data = $.ajax({
       url: "getsong.php",
       async: false
       }).responseText;

      var string = data.split('|');
      $(this).jPlayer("setMedia", {
        mp3: string[0]
      }).jPlayer("play");

      $('#artist').html(string[1]);
      $('#songname').html(string[2]);
    },
    swfPath: "js",
    supplied: "mp3"
  });
});
//]]>
</script>

   可以看到,在jPlayer插件的ready方法中,發起了一個ajax請求,請求getsong.php, 隨機地獲得一首播放的歌曲,然後對返回的資料重新用split方法分割「|」符號,其中所得的字串陣列string[0]即為mp3歌曲的URL位址,stringp[1]為歌手的名稱,這裡經由
  $('#artist').html(string[1])顯示出來, $('#songname').html(string[2])則顯示出歌的名稱。 swfPath指定該播放器的FLASH所在的目錄為js目錄,當然你可以自己定義路徑,supplied指出只支援MP3格式。
  運作後,可以看到以下播放器的效果:

201638165806293.jpg (434×126)

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn