论坛帖子中有新的回复就会出现提醒【有新消息】的ajax+php代码怎么写,求指导,谢谢!

最好有详细的代码... 最好有详细的代码 展开
 我来答
yu641150278
推荐于2016-09-01 · TA获得超过1069个赞
知道小有建树答主
回答量:637
采纳率:100%
帮助的人:297万
展开全部

你要判断是否是新消息,也就是是否已读,这个可以在数据表里加字段判断,比如is_read,1表示已读,0表示未读


获取数据。这个因为不是只有一个页面用到,所以写在js文件里,用到的页面都去导入。

setInterval("check_news()",1000);    //每隔一秒执行
function check_news(){
    var xmlhttp;
    if (window.XMLHttpRequest){
      xmlhttp=new XMLHttpRequest();
    }
    else{
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
    }  
    xmlhttp.onreadystatechange=function(){
      if (xmlhttp.readyState==4 && xmlhttp.status==200){
        if(xmlhttp.responseText>0){
           alert("有新消息");
        }else{
            alert(xmlhttp.responseText);
        }
      }
    }
    xmlhttp.open("GET","test.php?t=" + Math.random(),true);
    xmlhttp.send();
}

在test.php里,就是从数据库获取未读消息的条数,然后返回给前台页面。

比如

$sql = "select count(*) from news where is_read=0";
    $query = mysql_query($sql);
    $row = mysql_fetch_row($query);
    die($row[0]);        //这里把$row[0]的值返回了,也就是上面的xmlhttp.responseText.

追问
请问下怎么才能让已读完的值由0变为1呢
追答
你点进那条消息的时候就当作你阅读了这条消息,就把他设置为已读,这个能处理的吧。如果是在新页面打开消息就很简单,在跳过去的时候在php里更新数据库就好了,如果不是在新页面打开,那就又要用到ajax了
七鑫易维信息技术
2024-09-02 广告
Play Video 七鑫易维是致力于机器视觉和人工智能领域的高新科技企业,迄今已专注眼球追踪技术的研发、创新与应用超过14年,拥有完全自主知识产权,全球专利总量655余项。 作为眼球追踪技术领域的全球知名品牌,七鑫易维的产品体系覆盖眼动分... 点击进入详情页
本回答由七鑫易维信息技术提供
匿名用户
2014-02-10
展开全部
你可以设置一个函数,每隔多少时间向服务器发送一次请求,服务器有相应的页面来处理是否有新消息,在把这个值返回给请求的客户端。具体实现代码,我也不会,只能说思路。
追问
思路是对的,代码我也不会写
追答

假设有A,B两个表,A表是贴子的情况和用户无关。B表是每个用户的贴子情况。

  1. 用户登录,获取数据库中的B表中发贴记录和留言记录,并保存在本地变量中。

  2. 用户发新贴,服务器在A表,B表中分别记录贴子ID,和初始留言变量为0.

  3. 用户每发表一次留言,服务器A表中相应ID贴子的记录留言变量+1。

  4. 每隔多少秒请求服务器,去检查A表中留言变量是否和本地变量相同,不同更新B表并提示有新消息,相同则B表不变。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式