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正则表达式在页面验证url网址输入是否正确
Apr 04 jQuery
jQuery实现简单的滑动导航代码(移动端)
May 22 jQuery
jquery加载单文件vue组件的方法
Jun 20 jQuery
jQuery选择器之子元素选择器详解
Sep 18 jQuery
jQuery自动或手动图片切换效果
Oct 11 jQuery
[原创]jquery判断元素内容是否为空的方法
May 04 jQuery
jQuery实现的鼠标拖动浮层功能示例【拖动div等任何标签】
Dec 29 jQuery
浅谈JS和jQuery的区别
Mar 27 jQuery
jquery+ajax实现上传图片并显示上传进度功能【附php后台接收】
Jun 06 jQuery
jQuery实现可编辑的表格
Dec 11 jQuery
jquery css实现流程进度条
Mar 26 jQuery
jQuery实现容器间的元素拖拽功能
Dec 01 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异步执行的详解
2013/06/03 PHP
深入密码加salt原理的分析
2013/06/06 PHP
深入理解php的MySQL连接类
2013/06/07 PHP
PHP操作MySQL的mysql_fetch_* 函数的常见用法教程
2015/12/25 PHP
PHP扩展类型及安装方式解析
2020/04/27 PHP
PHP获取真实IP及IP模拟方法解析
2020/11/24 PHP
提高网站信任度的技巧
2008/10/17 Javascript
JavaScript 学习笔记一些小技巧
2010/03/28 Javascript
javascript学习笔记(十二) RegExp类型介绍
2012/06/20 Javascript
JS获取后台Cookies值的小例子
2013/03/04 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
Javascript控制input输入时间格式的方法
2015/01/28 Javascript
JS封装cookie操作函数实例(设置、读取、删除)
2015/11/17 Javascript
nodejs微信公众号支付开发
2016/09/19 NodeJs
详解handlebars+require基本使用方法
2016/12/21 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
2018/09/05 Javascript
Bootstrap-table使用footerFormatter做统计列功能
2018/09/07 Javascript
vue 之 css module的使用方法
2018/12/04 Javascript
javascript实现页面的实时时钟显示示例
2020/08/06 Javascript
vue实现下拉菜单树
2020/10/22 Javascript
[02:41]DOTA2英雄基础教程 亚巴顿
2014/01/02 DOTA
python计数排序和基数排序算法实例
2014/04/25 Python
Python获取央视节目单的实现代码
2015/07/25 Python
python类的方法属性与方法属性的动态绑定代码详解
2017/12/27 Python
Python文件读写常见用法总结
2019/02/22 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
python实现机器人卡牌
2019/10/06 Python
python实现翻译word表格小程序
2020/02/27 Python
Python爬虫过程解析之多线程获取小米应用商店数据
2020/11/14 Python
Speedo美国:澳大利亚顶尖泳衣制造商
2016/08/03 全球购物
Linux面试题LINUX系统类
2014/11/19 面试题
电子专业毕业生自我鉴定
2014/01/22 职场文书
公司总经理岗位职责范本
2014/08/15 职场文书
党员示范岗材料
2014/12/19 职场文书
地陪导游欢迎词
2015/01/26 职场文书
使用MybatisPlus打印sql语句
2022/04/22 SQL Server