jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码


Posted in jQuery onMarch 21, 2017

心血来潮想为自己的小项目做一个提醒系统,譬如私信,评论等消息都能及时传递过来。由于道行尚浅,网上那些长轮询对于我略微复杂,于是觉得还是自己写一写试试比较好。

我的思路是,单独在数据库中建一个提醒表,表主要由接收者的id和消息类型两个字段组成

/* 前台提醒表 */
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:帖子评论 2:商品售出 3:商品评论 4:小组申请已发送 5:小组创建成功 6:小组新成员加入 7:小组旧成员退出 8:活动邀请
)ENGINE=MyISAM DEFAULT CHARSET=UTF8;

然后在前台页面中写一个递归函数,用来请求Ajax。

function require() {
   var url = "{U('Group/checkNotify')}";
    
   $.get(url,null,function(data) {
    



      // 如果获得的数据不为空,则显示提醒
      if ($.trim(data) != '') {
        // 这里写提醒的方式
    

alert('haha');
      }
   });
   // 每三秒请求一次
   setTimeout('require()',3000);
}

在后台查询三秒前到当前时刻数据库中是否有数据插入,如果有,则返回所需要的信息

public function checkNotify() {
  // 实例化自定义的模型类
  $Notify = D("Notification");
  // 获取当前用户的id
  $mid = $_SESSION['member']['id'];
  // 由于Ajax三秒钟才执行一次,所以新数据的插入时间要晚于查询的的请求时间(当前时间)三秒钟
  $time = time() - 3;
  // 准备查询条件
  $where = "mid = $mid and created>$time";
   // 查找数据库中是否有新数据插入
  $bool = $Notify->where($where)->find();
  // 如果查询结果非空,则输出结果集第零条数据的type参数,即提醒类型,然后再从数据库对应表中获取提醒内容
  //本测试默认3秒中内只有一条消息,如果想更加精确,也可以缩短请求时间
  if ($bool != null) {
    //测试数据     
    echo $bool[0]['type'];
  };
}

当然,要让文档载入完毕后就执行该函数

<body onload="javascript:return require();">

以上所述是小编给大家介绍的jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
jQuery Easyui Treegrid实现显示checkbox功能
Aug 08 jQuery
基于jQuery选择器之表单对象属性筛选选择器的实例
Sep 19 jQuery
jQuery图片查看插件Magnify开发详解
Dec 25 jQuery
jquery根据name取得select选中的值实例(超简单)
Jan 25 jQuery
jQuery中each方法的使用详解
Mar 18 jQuery
关于jquery layui弹出层的使用方法
Apr 21 jQuery
js与jQuery实现获取table中的数据并拼成json字符串操作示例
Jul 12 jQuery
jQuery实现基本隐藏与显示效果的方法详解
Sep 05 jQuery
详解JQuery基础动画操作
Apr 12 jQuery
非常实用的jQuery代码段集锦【检测浏览器、滚动、复制、淡入淡出等】
Aug 08 jQuery
js与jquery获取input输入框中的值实例讲解
Feb 27 jQuery
jQuery treeview树形结构应用
Mar 24 jQuery
jquery插件制作 自增长输入框实现代码
Aug 17 #jQuery
使用jQuery监听扫码枪输入并禁止手动输入的实现方法(推荐)
Mar 21 #jQuery
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 #jQuery
jQuery插件HighCharts绘制简单2D折线图效果示例【附demo源码】
Mar 21 #jQuery
jQuery插件HighCharts绘制简单2D柱状图效果示例【附demo源码】
Mar 21 #jQuery
jQuery插件FusionCharts绘制ScrollColumn2D图效果示例【附demo源码下载】
Mar 22 #jQuery
jQuery轻松实现无缝轮播效果
Mar 22 #jQuery
You might like
rrmdir php中递归删除目录及目录下的文件
2011/05/15 PHP
解析php addslashes()与addclashes()函数的区别和比较
2013/06/24 PHP
php中hashtable实现示例分享
2014/02/13 PHP
Yii的Srbac插件用法详解
2016/07/14 PHP
PHP PDO操作MySQL基础教程
2017/06/05 PHP
PHP定义字符串的四种方式详解
2018/02/06 PHP
Laravel访问出错提示:`Warning: require(/vendor/autoload.php): failed to open stream: No such file or di解决方法
2019/04/02 PHP
PHP基于openssl实现非对称加密代码实例
2020/06/19 PHP
javascript实现unicode和字符的互相转换
2007/07/18 Javascript
获得所有表单值的JQuery实现代码[IE暂不支持]
2012/05/24 Javascript
JavaScript中对象的不同创建方法
2016/08/12 Javascript
js实现的简练高效拖拽功能示例
2016/12/21 Javascript
基于MVC方式实现三级联动(JavaScript)
2017/01/23 Javascript
vue-cli如何添加less 以及sass
2017/07/06 Javascript
vue+webpack 打包文件 404 页面空白的解决方法
2018/02/28 Javascript
30分钟快速入门掌握ES6/ES2015的核心内容(上)
2018/04/18 Javascript
flexible.js实现移动端rem适配方案
2020/04/07 Javascript
jQuery实现全选按钮
2021/01/01 jQuery
[57:59]EG vs Secret 2018国际邀请赛淘汰赛BO3 第一场 8.22
2018/08/23 DOTA
使用wxPython获取系统剪贴板中的数据的教程
2015/05/06 Python
Python+Wordpress制作小说站
2017/04/14 Python
Python实现上下班抢个顺风单脚本
2018/02/07 Python
pytorch 转换矩阵的维数位置方法
2018/12/08 Python
python+mysql实现教务管理系统
2019/02/20 Python
Python开启线程,在函数中开线程的实例
2019/02/22 Python
在django中使用apscheduler 执行计划任务的实现方法
2020/02/11 Python
用Python 爬取猫眼电影数据分析《无名之辈》
2020/07/24 Python
英国精品买手店:Browns Fashion
2016/09/29 全球购物
审计工作个人的自我评价
2013/12/25 职场文书
《小松树和大松树》教学反思
2014/02/20 职场文书
企业管理毕业生求职信
2014/03/11 职场文书
五一劳动节活动记录
2014/03/23 职场文书
副处级干部考察材料
2014/05/17 职场文书
2014年乡镇妇联工作总结
2014/12/02 职场文书
2015元旦联欢晚会结束语
2014/12/14 职场文书
spring boot实现文件上传
2022/08/14 Java/Android