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源码解读之extend()与工具方法、实例方法详解
Mar 30 jQuery
jQuery实现checkbox的简单操作
Nov 18 jQuery
jQuery实现左右滑动的toggle方法
Mar 03 jQuery
使用jquery DataTable和ajax向页面显示数据列表的方法
Aug 09 jQuery
jQuery序列化form表单数据为JSON对象的实现方法
Sep 20 jQuery
jQuery实现合并表格单元格中相同行操作示例
Jan 28 jQuery
JS/jQuery实现获取时间的方法及常用类完整示例
Mar 07 jQuery
jquery validate 实现动态增加/删除验证规则操作示例
Oct 28 jQuery
jQuery与原生JavaScript选择HTML元素集合用法对比分析
Nov 26 jQuery
jquery传参及获取方式(两种方式)
Feb 13 jQuery
jQuery实现推拉门效果
Oct 19 jQuery
JQuery绑定事件四种实现方法解析
Dec 02 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
第九节--绑定
2006/11/16 PHP
PHP用户管理中常用接口调用实例及解析(含源码)
2017/03/09 PHP
PHP连接sftp并下载文件的方法教程
2018/08/26 PHP
Laravel项目中timeAgo字段语言转换的改善方法示例
2019/09/16 PHP
Javascript 去除数组的重复元素
2010/05/04 Javascript
仿新浪微博返回顶部的jquery实现代码
2012/10/01 Javascript
常规表格多表头查询示例
2014/02/21 Javascript
javascript 中__proto__和prototype详解
2014/11/25 Javascript
谈谈JavaScript中的几种借用方法
2016/08/09 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
JavaScript对象拷贝与Object.assign用法实例分析
2018/06/20 Javascript
微信小程序实现的一键复制功能示例
2019/04/24 Javascript
快速对接payjq的个人微信支付接口过程解析
2019/08/15 Javascript
JS常用排序方法实例代码解析
2020/03/03 Javascript
react 不用插件实现数字滚动的效果示例
2020/04/14 Javascript
微信小程序之滑动页面隐藏和显示组件功能的实现代码
2020/06/19 Javascript
Vue组件间数据传递的方式(3种)
2020/07/13 Javascript
jQuery实现手风琴特效
2021/01/11 jQuery
python完成FizzBuzzWhizz问题(拉勾网面试题)示例
2014/05/05 Python
Python中使用ElementTree解析XML示例
2015/06/02 Python
Python2.x利用commands模块执行Linux shell命令
2016/03/11 Python
Python 出现错误TypeError: ‘NoneType’ object is not iterable解决办法
2017/01/12 Python
windows下cx_Freeze生成Python可执行程序的详细步骤
2018/10/09 Python
python数据挖掘需要学的内容
2019/06/23 Python
Python通过递归获取目录下指定文件代码实例
2019/11/07 Python
CSS3之多背景background使用示例
2013/10/18 HTML / CSS
HTML5+CSS3 诱人的实例:3D立方体旋转动画实例
2016/12/30 HTML / CSS
英国优质鞋类专家:Robinson’s Shoes
2017/12/08 全球购物
植村秀加拿大官网:Shu Uemura加拿大
2019/09/03 全球购物
食堂采购员岗位职责
2014/03/17 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
介绍信怎么写
2015/01/30 职场文书
会计工作岗位职责
2015/02/03 职场文书
法律意见书范文
2015/05/20 职场文书
银行求职信怎么写
2019/06/20 职场文书
工作报告范文
2019/06/20 职场文书