jQuery+ThinkPHP+Ajax實(shí)現(xiàn)即時(shí)消息提醒功能實(shí)例代碼
心血來(lái)潮想為自己的小項(xiàng)目做一個(gè)提醒系統(tǒng),譬如私信,評(píng)論等消息都能及時(shí)傳遞過(guò)來(lái)。由于道行尚淺,網(wǎng)上那些長(zhǎng)輪詢對(duì)于我略微復(fù)雜,于是覺(jué)得還是自己寫(xiě)一寫(xiě)試試比較好。
我的思路是,單獨(dú)在數(shù)據(jù)庫(kù)中建一個(gè)提醒表,表主要由接收者的id和消息類型兩個(gè)字段組成
/* 前臺(tái)提醒表 */ CREATE TABLE IF NOT EXISTS notification( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, -- 主鍵自增 mid INT NOT NULL DEFAULT 0, -- 用戶id type INT NOT NULL DEFAULT 0 -- 0:私信 1:帖子評(píng)論 2:商品售出 3:商品評(píng)論 4:小組申請(qǐng)已發(fā)送 5:小組創(chuàng)建成功 6:小組新成員加入 7:小組舊成員退出 8:活動(dòng)邀請(qǐng) )ENGINE=MyISAM DEFAULT CHARSET=UTF8;
然后在前臺(tái)頁(yè)面中寫(xiě)一個(gè)遞歸函數(shù),用來(lái)請(qǐng)求Ajax。
function require() { var url = "{U('Group/checkNotify')}"; $.get(url,null,function(data) { // 如果獲得的數(shù)據(jù)不為空,則顯示提醒 if ($.trim(data) != '') { // 這里寫(xiě)提醒的方式 alert('haha'); } }); // 每三秒請(qǐng)求一次 setTimeout('require()',3000); }
在后臺(tái)查詢?nèi)肭暗疆?dāng)前時(shí)刻數(shù)據(jù)庫(kù)中是否有數(shù)據(jù)插入,如果有,則返回所需要的信息
public function checkNotify() { // 實(shí)例化自定義的模型類 $Notify = D("Notification"); // 獲取當(dāng)前用戶的id $mid = $_SESSION['member']['id']; // 由于Ajax三秒鐘才執(zhí)行一次,所以新數(shù)據(jù)的插入時(shí)間要晚于查詢的的請(qǐng)求時(shí)間(當(dāng)前時(shí)間)三秒鐘 $time = time() - 3; // 準(zhǔn)備查詢條件 $where = "mid = $mid and created>$time"; // 查找數(shù)據(jù)庫(kù)中是否有新數(shù)據(jù)插入 $bool = $Notify->where($where)->find(); // 如果查詢結(jié)果非空,則輸出結(jié)果集第零條數(shù)據(jù)的type參數(shù),即提醒類型,然后再?gòu)臄?shù)據(jù)庫(kù)對(duì)應(yīng)表中獲取提醒內(nèi)容 //本測(cè)試默認(rèn)3秒中內(nèi)只有一條消息,如果想更加精確,也可以縮短請(qǐng)求時(shí)間 if ($bool != null) { //測(cè)試數(shù)據(jù) echo $bool[0]['type']; }; }
當(dāng)然,要讓文檔載入完畢后就執(zhí)行該函數(shù)
<body onload="javascript:return require();">
以上所述是小編給大家介紹的jQuery+ThinkPHP+Ajax實(shí)現(xiàn)即時(shí)消息提醒功能實(shí)例代碼,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
相關(guān)文章
使用jQuery fancybox插件打造一個(gè)實(shí)用的數(shù)據(jù)傳輸模態(tài)彈出窗體
模態(tài)窗體已經(jīng)成為Web開(kāi)發(fā)人員設(shè)計(jì)界面時(shí)經(jīng)常要使用的傳輸數(shù)據(jù)的方式;通過(guò)模態(tài)窗口,可以提高網(wǎng)站的可用性;你可以在你的郵件里收到用戶發(fā)送的反饋消息2013-01-01JQuery單選按鈕Radio和復(fù)選框checkbox的操作代碼
這篇文章主要介紹了JQuery單選按鈕Radio和復(fù)選框checkbox的操作,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-04-04jQuery扇形定時(shí)器插件pietimer使用方法詳解
這篇文章主要為大家詳細(xì)介紹了jQuery扇形定時(shí)器插件pietimer的使用方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-07-07jquery easyui如何實(shí)現(xiàn)格式化列
本篇文章主要介紹了jquery easyui如何實(shí)現(xiàn)格式化列 ,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-07-07jQuery插件ContextMenu自定義圖標(biāo)
這篇文章主要為大家詳細(xì)介紹了jQuery插件ContextMenu自定義圖標(biāo)的相關(guān)代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03jQuery dataTables與jQuery UI 對(duì)話框dialog的使用教程
這篇文章主要介紹了jQuery dataTables與jQuery UI 對(duì)話框dialog的使用教程的相關(guān)資料,本文介紹的非常詳細(xì),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09setInterval,setTimeout與jquery混用的問(wèn)題
當(dāng)遇到setInterval,setTimeout與jquery混用的問(wèn)題 時(shí),直接按JavaScript中的語(yǔ)法寫(xiě)并不起作用,有以下兩種解決方法2013-04-04Jquery實(shí)現(xiàn)select multiple左右添加和刪除功能的簡(jiǎn)單實(shí)例
下面小編就為大家?guī)?lái)一篇Jquery實(shí)現(xiàn)select multiple左右添加和刪除功能的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2016-05-05