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版本 1.x? 2.x? 3.x?
Apr 01 jQuery
jquery.form.js异步提交表单详解
Apr 25 jQuery
360提示[高危]使用存在漏洞的JQuery版本的解决方法
Oct 27 jQuery
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
jquery实现侧边栏左右伸缩效果的示例
Dec 19 jQuery
jQuery中实现text()的方法
Apr 04 jQuery
jQuery动态生成的元素绑定事件操作实例分析
May 04 jQuery
jquery实现垂直无限轮播的方法分析
Jul 16 jQuery
viewer.js一个强大的基于jQuery的图像查看插件(支持旋转、缩放)
Apr 01 jQuery
jQuery编写QQ简易聊天框
Aug 27 jQuery
jquery插件实现图片悬浮
Apr 16 jQuery
详解jQuery的核心函数和事件处理
Feb 18 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
需要使用php模板的朋友必看的很多个顶级PHP模板引擎比较分析
2008/05/26 PHP
PHP跨时区(UTC时间)应用解决方案
2013/01/11 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
3个PHP多维数组转为一维数组的方法实例
2014/03/13 PHP
PHP APC配置文件2套和参数详解
2014/06/11 PHP
ThinkPHP令牌验证实例
2014/06/18 PHP
Stop SQL Server
2007/06/21 Javascript
小结Node.js中非阻塞IO和事件循环
2014/09/18 Javascript
jQuery+CSS3实现树叶飘落特效
2015/02/01 Javascript
一看就懂:jsonp详解
2015/06/01 Javascript
javascript中一些util方法汇总
2015/06/10 Javascript
深入了解JavaScript中的Symbol的使用方法
2015/07/28 Javascript
Javascript模仿淘宝信用评价实例(附源码)
2015/11/26 Javascript
使用JavaScript脚本判断页面是否在微信中被打开
2016/03/06 Javascript
jQuery实现为LI列表前3行设置样式的方法【2种方法】
2016/09/04 Javascript
JS敏感词过滤代码
2016/12/23 Javascript
jQuery zTree 异步加载添加子节点重复问题
2017/11/29 jQuery
ExtJs使用自定义插件动态保存表头配置(隐藏或显示)
2018/09/25 Javascript
使用vue-cli3新建一个项目并写好基本配置(推荐)
2019/04/24 Javascript
微信小程序实现的图片保存功能示例
2019/04/24 Javascript
[14:56]教你分分钟做大人:巫医
2014/10/30 DOTA
python中查找excel某一列的重复数据 剔除之后打印
2013/02/10 Python
使用Python开发windows GUI程序入门实例
2014/10/23 Python
python3.5 email实现发送邮件功能
2018/05/22 Python
Flask框架中request、请求钩子、上下文用法分析
2019/07/23 Python
python写入数据到csv或xlsx文件的3种方法
2019/08/23 Python
Python使用xlrd实现读取合并单元格
2020/07/09 Python
Python使用lambda抛出异常实现方法解析
2020/08/20 Python
如何使用python-opencv批量生成带噪点噪线的数字验证码
2020/12/21 Python
英国护发和美妆在线商店:Klip Shop
2019/03/24 全球购物
小学生综合素质评语
2014/04/23 职场文书
2015元旦文艺汇演主持稿(开场白+结束语)
2014/12/14 职场文书
办公经费申请报告
2015/05/15 职场文书
高一英语教学反思
2016/03/03 职场文书
手把手教你导入Go语言第三方库
2021/08/04 Golang
使用ICOM IC-R9500接收机同时测评十台收音机中波接收性能
2022/05/10 无线电