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 表单组件增加焦点切换功能的方法
Apr 13 jQuery
QRCode.js:基于JQuery的生成二维码JS库的使用
Jun 23 jQuery
jQuery validata插件实现方法
Jun 25 jQuery
jQuery Form插件使用详解_动力节点Java学院整理
Jul 17 jQuery
jQuery实现可兼容IE6的遮罩功能详解
Sep 19 jQuery
基于jquery实现五星好评
Nov 18 jQuery
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
jQuery无冲突模式详解
Jan 17 jQuery
Easyui 去除jquery-easui tab页div自带滚动条的方法
May 10 jQuery
jquery操作checkbox的常用方法总结【附测试源码下载】
Jun 10 jQuery
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
jQuery实现简单聊天室
Feb 08 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
用cookies来跟踪识别用户
2006/10/09 PHP
smarty基础之拼接字符串的详解
2013/06/18 PHP
详解PHP的Yii框架中自带的前端资源包的使用
2016/03/31 PHP
Linux平台PHP5.4设置FPM线程数量的方法
2016/11/09 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
Laravel框架定时任务2种实现方式示例
2018/12/08 PHP
不间断滚动JS打包类,基本可以实现所有的滚动效果,太强了
2007/12/08 Javascript
flash 得到自身url参数的代码
2009/11/15 Javascript
游览器中javascript的执行过程(图文)
2012/05/20 Javascript
jQuery操作checkbox选择(list/table)
2013/04/07 Javascript
用js来刷新当前页面保留参数的具体实现
2013/12/23 Javascript
在页面上用action传递参数到后台出现乱码的解决方法
2013/12/31 Javascript
javascript浏览器窗口之间传递数据的方法
2015/01/20 Javascript
JS实现可缩放、拖动、关闭和最小化的浮动窗口完整实例
2015/03/04 Javascript
jQuery实现带动画效果的二级下拉导航方法
2015/03/11 Javascript
nodejs实现获取当前url地址及url各种参数值
2015/06/25 NodeJs
js实现显示当前状态的导航效果代码
2015/08/28 Javascript
基于JavaScript实现移动端点击图片查看大图点击大图隐藏
2015/11/04 Javascript
微信小程序 地图定位简单实例
2016/10/14 Javascript
AngularJS表单提交实例详解
2017/02/18 Javascript
原生js的ajax和解决跨域的jsonp(实例讲解)
2017/10/16 Javascript
layui自己添加图片按钮并点击跳转页面的例子
2019/09/14 Javascript
js实现鼠标拖拽div左右滑动
2020/01/15 Javascript
vue页面更新patch的实现示例
2020/03/25 Javascript
python 实现登录网页的操作方法
2018/05/11 Python
Python开发网站目录扫描器的实现
2019/02/21 Python
python中的TCP(传输控制协议)用法实例分析
2019/11/15 Python
Python 中@property的用法详解
2020/01/15 Python
阿迪达斯加拿大官网:Adidas加拿大
2016/08/25 全球购物
美国环保婴儿用品公司:The Honest Company
2017/11/23 全球购物
优秀共产党员先进事迹
2014/01/27 职场文书
办公室主任个人对照检查材料思想汇报
2014/10/11 职场文书
2014个人年终工作总结范文
2014/12/15 职场文书
普希金诗歌赏析(6首)
2019/08/22 职场文书
八年级作文之感悟亲情
2019/11/20 职场文书
TV动画《八十龟酱观察日记》第四季宣传PV公布
2022/04/06 日漫