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 ui sortable拖拽后保存位置
Apr 27 jQuery
利用jQuery异步上传文件的插件用法详解
Jul 19 jQuery
jQuery实现腾讯信用界面(自制刻度尺)样式
Aug 15 jQuery
jQuery plugin animsition使用小结
Sep 14 jQuery
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
基于jquery trigger函数无法触发a标签的两种解决方法
Jan 06 jQuery
js和jQuery以及easyui实现对下拉框的指定赋值方法
Jan 23 jQuery
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
jQuery实现带右侧索引功能的通讯录示例【附源码下载】
Apr 17 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
jQuery解析json格式数据示例
Sep 01 jQuery
js和jquery判断数据类型的4种方法总结
Aug 28 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实现按照权重随机排序数据的方法
2015/01/09 PHP
PHP获取文件夹内文件数的方法
2015/03/12 PHP
PHP性能分析工具XHProf安装使用教程
2015/05/13 PHP
PHP框架性能测试报告
2016/05/08 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
escape、encodeURI、encodeURIComponent等方法的区别比较
2006/12/27 Javascript
Tinymce+jQuery.Validation使用产生的BUG
2010/03/29 Javascript
原生javascript实现图片弹窗交互效果
2015/01/12 Javascript
js实现九宫格图片半透明渐显特效的方法
2015/02/16 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
Vue+webpack项目基础配置教程
2018/02/12 Javascript
在vant中使用时间选择器和popup弹出层的操作
2020/11/04 Javascript
Nuxt 项目性能优化调研分析
2020/11/07 Javascript
Python生成随机MAC地址
2015/03/10 Python
详解MySQL数据类型int(M)中M的含义
2016/11/20 Python
python递归删除指定目录及其所有内容的方法
2017/01/13 Python
关于Tensorflow中的tf.train.batch函数的使用
2018/04/24 Python
将python安装信息加入注册表的示例
2019/11/20 Python
python实现批量处理将图片粘贴到另一张图片上并保存
2019/12/12 Python
python图形界面开发之wxPython树控件使用方法详解
2020/02/24 Python
Scrapy项目实战之爬取某社区用户详情
2020/09/17 Python
彻底解决Python包下载慢问题
2020/11/15 Python
YBF Beauty官网:美丽挚友,美国知名彩妆品牌
2020/11/22 全球购物
一份全面的PHP面试问题考卷
2012/07/15 面试题
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
启动一个线程是用run()还是start()
2016/12/25 面试题
生物技术毕业生自荐信
2013/10/23 职场文书
国贸专业个人求职信范文
2014/01/08 职场文书
中学生校园广播稿
2014/01/16 职场文书
学生干部的自我评价分享
2014/01/18 职场文书
2014年元旦活动方案
2014/02/15 职场文书
招商引资工作汇报
2014/10/28 职场文书
教师党的群众路线教育实践活动个人整改方案
2014/10/31 职场文书
2014年党建工作汇报材料
2014/11/02 职场文书
2014年团队工作总结
2014/11/24 职场文书