jQuery+ThinkPHP+Ajax实现即时消息提醒功能实例代码

 更新时间:2017年03月21日 17:04:50   作者:jauliu  
这篇文章主要介绍了jQuery+ThinkPHP+Ajax实现即时消息提醒功能的实例代码,非常不错,具有参考借鉴价值,需要的朋友参考下

心血来潮想为自己的小项目做一个提醒系统,譬如私信,评论等消息都能及时传递过来。由于道行尚浅,网上那些长轮询对于我略微复杂,于是觉得还是自己写一写试试比较好。

我的思路是,单独在数据库中建一个提醒表,表主要由接收者的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统计子菜单的条数示例代码

    统计子菜单条数的方法有很多,在本文为大家详细介绍下使用jquery是如何实现的,感兴趣的朋友不要错过
    2013-10-10
  • jquery插件实现扫雷游戏(3)

    jquery插件实现扫雷游戏(3)

    这篇文章主要介绍了jquery插件实现扫雷游戏的第三篇,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-04-04
  • jQuery插件easyUI实现通过JS显示Dialog的方法

    jQuery插件easyUI实现通过JS显示Dialog的方法

    这篇文章主要介绍了jQuery插件easyUI实现通过JS显示Dialog的方法,实例分析了jQuery插件easyUI弹出Dialog的具体实现技巧,需要的朋友可以参考下
    2016-09-09
  • jQuery实现拖动剪裁图片作为头像

    jQuery实现拖动剪裁图片作为头像

    本文主要介绍了jQuery实现拖动剪裁图片作为头像的具体实例方法,具有很好的参考价值,下面跟着小编一起来看下吧
    2016-12-12
  • ext jquery 简单比较

    ext jquery 简单比较

    EXT体积大,jQuery更专注于简化最基础的开发工作.所以使用起来,也就感觉更像是使用原始的js进行开发一样
    2010-04-04
  • jQuery之动画ajax事件(实例讲解)

    jQuery之动画ajax事件(实例讲解)

    下面小编就为大家带来一篇jQuery之动画ajax事件(实例讲解)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-07-07
  • jquery插件实现无缝轮播

    jquery插件实现无缝轮播

    这篇文章主要为大家详细介绍了jquery插件说下无缝轮播,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-05-05
  • jQuery延迟加载图片插件Lazy Load使用指南

    jQuery延迟加载图片插件Lazy Load使用指南

    在页面上图片比较多的时候,打开一张页面必然引起与服务器大数据量的交互。尤其是对于高清晰的图片,占了几百K的空间。那么我们如何才能改变这种状况呢,这就是今天我们要探讨的问题了。
    2015-03-03
  • 使用CSS样式position:fixed水平滚动的方法

    使用CSS样式position:fixed水平滚动的方法

    这篇文章主要介绍了使用CSS样式position:fixed水平滚动的方法,需要的朋友可以参考下
    2014-02-02
  • jquery实现上传文件进度条

    jquery实现上传文件进度条

    这篇文章主要为大家详细介绍了jquery实现上传文件进度条,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03

最新评论