利用jQuery設(shè)計(jì)一個(gè)簡(jiǎn)單的web音樂播放器的實(shí)例分享
來源:易賢網(wǎng) 閱讀:762 次 日期:2016-07-21 15:39:26
溫馨提示:易賢網(wǎng)小編為您整理了“利用jQuery設(shè)計(jì)一個(gè)簡(jiǎn)單的web音樂播放器的實(shí)例分享”,方便廣大網(wǎng)友查閱!

這篇文章主要介紹了利用jQuery設(shè)計(jì)一個(gè)簡(jiǎn)單的web音樂播放器的實(shí)例分享,包括PHP后臺(tái)和從MySQL中讀取曲目等基本功能的實(shí)現(xiàn),需要的朋友可以參考下

一、準(zhǔn)備數(shù)據(jù)庫(kù)

首先,我們?cè)O(shè)計(jì)MYSQL數(shù)據(jù)庫(kù)如下:

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是歌曲的名稱。我們?cè)偌尤胍恍永龜?shù)據(jù),如下:

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

二、設(shè)計(jì)HTML頁(yè)面

在完成數(shù)據(jù)庫(kù)的設(shè)計(jì)后,我們就可以開始設(shè)計(jì)HTML頁(yè)面了。這里我們首先要下載jQuery的一個(gè)音樂播放插件jPlayer(http://jplayer.org/)。把下載下來的包解壓縮后,把js和skin兩個(gè)文件夾的內(nèi)容放到你的應(yīng)用的根目錄下,它們是要用到的javascript文件和CSS樣式應(yīng)用文件?,F(xiàn)在可以開始設(shè)計(jì)HTML頁(yè)了,把文件命名為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>

以上代碼其實(shí)很簡(jiǎn)單,只是引入了jQuery和jPlayer插件的必須要的文件和樣式,然后設(shè)置好播放器的外觀,這里都是通過DIV去預(yù)先定位指定所在的層,比如播放進(jìn)度條,播放的按鈕(開始/暫停),聲音的控制大小等。

三、讀取數(shù)據(jù)庫(kù)中的曲目

接下來,我們就可以從數(shù)據(jù)庫(kù)中讀取要播放的歌曲了,本文將采用ezSQL的PHP開源庫(kù)去連接數(shù)據(jù)庫(kù),當(dāng)然你也可以用傳統(tǒng)的MYSQL連接方法。ezSQL的具體用法我們就不再過多介紹了,這里使用其實(shí)很簡(jiǎn)單,把ez_sql_core.php和ez_sql_mysql.php兩個(gè)文件放到項(xiàng)目的根目錄下即可,我們編寫php文件如下,命名為getsong.php,代碼如下:

<?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;

?>

這里,用rand()隨機(jī)在MYSQL中取出一條記錄(曲目),然后分別用變量保存其歌曲的名稱,歌手名和地址,將它們用符號(hào)“|”連接起來。而因?yàn)槲覀円褂胊jax去調(diào)用這個(gè)PHP,所以注意語句:

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

主要的目的是防止用戶在瀏覽器地址欄中只是輸入比如http://www.yousite.com/getsong.php就能獲得歌曲的URL地址,只允許是通過AJAX發(fā)出的請(qǐng)求才予以接受。

四、最終實(shí)現(xiàn)完善代碼

最后,我們可以修改jPlayer的代碼,讓我們的播放器運(yùn)行起來,修改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方法中,發(fā)起了一個(gè)ajax請(qǐng)求,請(qǐng)求getsong.php, 隨機(jī)地獲得一首播放的歌曲,然后對(duì)返回的數(shù)據(jù)重新用split方法分割“|”符號(hào),其中得出的字符串?dāng)?shù)組string[0]即為mp3歌曲的URL地址,stringp[1]為歌手的名稱,這里通過

$('#artist').html(string[1])顯示出來, $('#songname').html(string[2])則顯示出歌的名稱。swfPath指定該播放器的FLASH所在的目錄為js目錄,當(dāng)然你可以自己定義路徑,supplied指出只支持MP3格式。

運(yùn)行后,可以看到如下播放器的效果:

名單

更多信息請(qǐng)查看網(wǎng)絡(luò)編程
由于各方面情況的不斷調(diào)整與變化,易賢網(wǎng)提供的所有考試信息和咨詢回復(fù)僅供參考,敬請(qǐng)考生以權(quán)威部門公布的正式信息和咨詢?yōu)闇?zhǔn)!
關(guān)于我們 | 聯(lián)系我們 | 人才招聘 | 網(wǎng)站聲明 | 網(wǎng)站幫助 | 非正式的簡(jiǎn)要咨詢 | 簡(jiǎn)要咨詢須知 | 加入群交流 | 手機(jī)站點(diǎn) | 投訴建議
工業(yè)和信息化部備案號(hào):滇ICP備2023014141號(hào)-1 云南省教育廳備案號(hào):云教ICP備0901021 滇公網(wǎng)安備53010202001879號(hào) 人力資源服務(wù)許可證:(云)人服證字(2023)第0102001523號(hào)
云南網(wǎng)警備案專用圖標(biāo)
聯(lián)系電話:0871-65317125(9:00—18:00) 獲取招聘考試信息及咨詢關(guān)注公眾號(hào):hfpxwx
咨詢QQ:526150442(9:00—18:00)版權(quán)所有:易賢網(wǎng)
云南網(wǎng)警報(bào)警專用圖標(biāo)