利用jQuery設(shè)計(jì)一個(gè)簡單的web音樂播放器的實(shí)例分享
一、準(zhǔn)備數(shù)據(jù)庫
首先,我們設(shè)計(jì)MYSQL數(shù)據(jù)庫如下:
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是歌曲的名稱。我們再加入一些樣例數(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頁面
在完成數(shù)據(jù)庫的設(shè)計(jì)后,我們就可以開始設(shè)計(jì)HTML頁面了。這里我們首先要下載jQuery的一個(gè)音樂播放插件jPlayer(http://jplayer.org/)。把下載下來的包解壓縮后,把js和skin兩個(gè)文件夾的內(nèi)容放到你的應(yīng)用的根目錄下,它們是要用到的javascript文件和CSS樣式應(yīng)用文件?,F(xiàn)在可以開始設(shè)計(jì)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>
以上代碼其實(shí)很簡單,只是引入了jQuery和jPlayer插件的必須要的文件和樣式,然后設(shè)置好播放器的外觀,這里都是通過DIV去預(yù)先定位指定所在的層,比如播放進(jìn)度條,播放的按鈕(開始/暫停),聲音的控制大小等。
三、讀取數(shù)據(jù)庫中的曲目
接下來,我們就可以從數(shù)據(jù)庫中讀取要播放的歌曲了,本文將采用ezSQL的PHP開源庫去連接數(shù)據(jù)庫,當(dāng)然你也可以用傳統(tǒng)的MYSQL連接方法。ezSQL的具體用法我們就不再過多介紹了,這里使用其實(shí)很簡單,把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ā)出的請求才予以接受。
四、最終實(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請求,請求getsong.php, 隨機(jī)地獲得一首播放的歌曲,然后對返回的數(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)行后,可以看到如下播放器的效果:
相關(guān)文章
Jquery中增加參數(shù)與Json轉(zhuǎn)換代碼
有時(shí)候,我們需要進(jìn)一步轉(zhuǎn)化為json表達(dá)式,參考Ext中的Ext.urlDecode函數(shù),我們可以實(shí)現(xiàn)一個(gè)相應(yīng)的jquery中使用的函數(shù)。2009-11-11jQuery UI AutoComplete 自動(dòng)完成使用小記
jQuery UI AutoComplete 自動(dòng)完成使用小記,使用jquery的朋友實(shí)現(xiàn)搜索自動(dòng)完成等功能的朋友可以參考下。2010-08-08jQuery實(shí)現(xiàn)點(diǎn)擊下拉框中的值累加到文本框中的方法示例
這篇文章主要介紹了jQuery實(shí)現(xiàn)點(diǎn)擊下拉框中的值累加到文本框中的方法,涉及jQuery事件綁定及頁面元素屬性動(dòng)態(tài)獲取與操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2017-10-10jQuery Validate插件自定義驗(yàn)證規(guī)則的方法
這篇文章主要介紹了jQuery Validate插件自定義驗(yàn)證規(guī)則的方法,f非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-12-12jQuery分頁插件jquery.pagination.js使用方法解析
這篇文章主要為大家詳細(xì)解析了jQuery分頁插件jquery.pagination使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-02-02jquery attr 設(shè)定src中含有&(宏)符號(hào)問題的解決方法
今天在用 jquery 的attr 方法設(shè)定 iframe的src屬性的時(shí)候遇到了一個(gè)奇怪的為題,現(xiàn)在把問題及解決方面寫出來,讓遇到同樣問題的人不要在走彎路。2011-07-07jquery漸隱漸顯的圖片幻燈閃爍切換實(shí)現(xiàn)方法
這篇文章主要介紹了jquery漸隱漸顯的圖片幻燈閃爍切換實(shí)現(xiàn)方法,實(shí)例分析了jQuery操作圖片的技巧及鼠標(biāo)事件用法,需要的朋友可以參考下2015-02-02