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 Form轻松实现文件上传
May 24 jQuery
jQuery实现下拉菜单的实例代码
Jun 19 jQuery
jQuery、layer实现弹出层的打开、关闭功能
Jun 28 jQuery
JQuery选中select组件被选中的值方法
Mar 08 jQuery
jQuery中将json数据显示到页面表格的方法
May 27 jQuery
jQuery实现导航样式布局操作示例【可自定义样式布局】
Jul 24 jQuery
jQuery内容过滤选择器与子元素过滤选择器用法实例分析
Feb 20 jQuery
jQuery高级编程之js对象、json与ajax用法实例分析
Nov 01 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
jQuery实现放大镜案例
Oct 19 jQuery
jQuery实现可以计算进制转换的计算器
Oct 19 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
DC的38部超级英雄动画电影
2020/03/03 欧美动漫
PHP扩展开发教程(总结)
2015/11/04 PHP
php如何修改SESSION的生存存储时间的实例代码
2017/07/05 PHP
php根据命令行参数生成配置文件详解
2019/03/15 PHP
JavaScript Event事件学习第一章 Event介绍
2010/02/07 Javascript
jquery 卷帘效果实现代码(不同方向)
2013/02/05 Javascript
JS将表单导出成EXCEL的实例代码
2013/11/11 Javascript
js光标定位文本框回车表单提交问题的解决方法
2015/05/11 Javascript
AngularJS转换响应内容
2016/01/27 Javascript
分享我对JS插件开发的一些感想和心得
2016/02/04 Javascript
jQuery中ajax错误调试分析
2016/12/01 Javascript
node.js实现回调的方法示例
2017/03/01 Javascript
基于JS实现一个随机生成验证码功能
2019/05/29 Javascript
微信小程序button标签open-type属性原理解析
2020/01/21 Javascript
vue实现点击按钮“查看详情”弹窗展示详情列表操作
2020/09/09 Javascript
[02:52]2014DOTA2西雅图国际邀请赛 CIS战队巡礼
2014/07/07 DOTA
python中偏函数partial用法实例分析
2015/07/08 Python
利用Python中unittest实现简单的单元测试实例详解
2017/01/09 Python
基于python实现高速视频传输程序
2019/05/05 Python
python 读写excel文件操作示例【附源码下载】
2019/06/19 Python
详解10个可以快速用Python进行数据分析的小技巧
2019/06/24 Python
Python利用matplotlib做图中图及次坐标轴的实例
2019/07/08 Python
Python常用模块os.path之文件及路径操作方法
2019/12/03 Python
python实现银行实战系统
2020/02/26 Python
利物浦足球俱乐部官方网上商店:Liverpool FC Official Store
2018/01/13 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
Mamaearth官方网站:印度母婴护理产品公司
2019/10/06 全球购物
热爱祖国演讲稿
2014/05/04 职场文书
教师工作失职检讨书
2014/09/18 职场文书
导游词开场白
2015/01/31 职场文书
大四学生个人总结
2015/02/15 职场文书
少先队工作总结2015
2015/05/13 职场文书
妈妈再爱我一次观后感
2015/06/08 职场文书
朋友离别感言
2015/08/04 职场文书
小学数学教师研修日志
2015/11/13 职场文书
Python实现Hash算法
2022/03/18 Python