thinkphp使用ajax、jquery、Mysql实现了简单的客户端通信功能

1、使用js的ajax局部刷新功能,每次刷新将数据库中读取出的新记录插入到页面的显示区域,直接上代码:

      window.onload =setInterval(showWords1000);//加载完成之后开始执行刷新功能

       function showWords()//刷新时被调用函数,实现ajax请求
            { 
                xmlHttp=GetXmlHttpObject();//从自定义的函数中获取请求对象。
                if (xmlHttp==null)
                {
                    alert ("Browser does not support HTTP Request")
                    return;
                }
                var url="index.php?g=Ksks&m=Comments&a=refresh";//要请求的路径使用shuipfcms框架,所以g是分组,m是action控制器,a是模板
                url=url+"&data_id="+$("#data_id").val();//接上,data_id传的参数,用于查询数据库的id
                url=url+"&lasttime="+$("i").last().siblings('input').val();//lasttime是页面显示数据的最后一个记录的时间戳,查找时根据大于这个时间戳的条件查找
                xmlHttp.onreadystatechange=stateChanged;//响应状态改变时调用的函数
                xmlHttp.open("GET",url,true);//使用get方法提交
                xmlHttp.send();//上面传参之后,这句可要可不要
            }
            function stateChanged() //实现向页面插入数据功能
            { 
           var str =""; 
                if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete")
                { 
                 eval("var arrs="+xmlHttp.responseText);//获取由action响应输出的数据,因为数据室php数组格式,需用eval或json转化成js数组格式
                    var chdiv=$("#conversation_history");//通信聊天记录框
                    for(var j=0;j<arrs.length;j++){//循环插入数据
                                var obj=$("<tr><td><h3></h3></td><td></td></tr>");//定义页面当中记录框的html格式代码
               var i=$("<i>&nbsp;&nbsp;"+arrs[j].times+"</i><input type='hidden' value='"+arrs[j].times+"'>");//i标签i为thinkphp定义的直接将时间输出到

                               //input隐藏并且存储得到数据里面的聊天发送时间

                                var p=$("<p></p>");
               p.html(arrs[j].content);//聊天内容
               p.append(i);
               var h3value=arrs[j].name;//发送的作者
               obj.find("h3").html(h3value+":");
               if(h3value=="主持人")
               {obj.find("h3").addClass("presenter");}//主持人会特别显示
               obj.find("td:last").append(p);
                                chdiv.append(obj);//追加到table里面
                    }
                    chdiv.parent().scrollTop(chdiv.parent()[0].scrollHeight+0);//滚动到底部
                } 
            }


            function GetXmlHttpObject()//定义ajax请求对象
            {
                var xmlHttp=null;
                try
                {
                    // Firefox, Opera 8.0+, Safari
                    xmlHttp=new XMLHttpRequest();
                }
                catch (e)
                {
                    //Internet Explorer
                    try
                    {
                        xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
                    }
                    catch (e)
                    {
                        xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
                    }
                }
                return xmlHttp;
            }

2、action控制器,直接上代码:

function refresh(){
            $data_id = I('get.data_id');//获得嘉宾id
            $lasttime = I('get.lasttime');
            //print_r(date("Y-m-d H:i:s",$lasttime));
            if(!$data_id)
                $this->error("该访谈不存在!"); 
            $data = M("ksks_words_memoir");
            
            //print_r(date('Y-m-d H:i:s',$lasttime));
            if(!$data)
                $this->error("初始化数据失败!");
            //$words = $data->where(array('dataid' => $data_id))->order('time asc')->select();
            //print_r($data->where(array('time' => $lasttime))->select());
            $where['time'] = array('gt',$lasttime);
            $count = $data->where($where)->count();
            //print_r(date("Y-m-d H:i:s",$lasttime));
            $words = $data->where($where)->select();
            $datas = array();//要返回的数组
            $i = 0;
            foreach($words as $word)
            {
                $datas[$i]['name'] = $word['name'];
                $datas[$i]['content'] = $word['content'];
                $datas[$i]['times'] = date('Y-m-d H:i:s',$word['time']);
                $lasttime = $word['time'];
                $i = $i+1;
            }
            setCookie('lasttime',$lasttime);
            $datas = json_encode($datas);
            //$this->cache();
            echo $datas;
   }

//要看比赛了,先不做过多解释,日后再谈

3、聊天页面,直接上代码:

<volist name="words" id="vo">
<tr>
<td><h3 <if condition="$vo['name']=='主持人'">class="presenter"</if>>{$vo.name}:</h3></td>
<td>
<div>{$vo.content}<i>&nbsp;&nbsp;{$vo.time|date="Y-m-d H:i:s",###}</i>
                          <input type="hidden" name="time" value="{$vo.time}">
</div>
</td>
</tr>
</volist>

//看世界杯,日后再谈







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
ShuipFCMS网站系统最新官方版,ShuipFCMS 基于ThinkPHP框架开发,采用独立分组的方式开发的内容管理系统。支持模块安装/卸载,模型自定义,整合UCenter通行证等。根据安装程序安装好后,进入后台需要进行如下操作:更新站点缓存。 进入 内容 -> 批量更新URL 更新地址。 进入 内容 -> 批量更新栏目页 进行生成栏目页。 进入 内容 -> 批量更新内容页 进行生成内容页。 进入 模块 -> 搜索配置 -> 重建索引 进行搜索数据的重建。 主要模块介绍: Admin模块:后台管理模块。 Models模块:模型管理模块。 Search模块:搜索模块。 Attachment模块:附件管理模块。 Collection模块:采集模块。 Comments模块:评论模块。 Contents模块:内容模块。 Cron模块:计划任务模块。 Domains模块:域名绑定模块。 Template模块:模板管理模块。 ShuipFCMS内容管理系统 1.4.0 更新日志:2014-01-13 [Bug修复] 1、修复添加反斜杠后不能正常保存反斜杠(会丢失反斜杠)的问题。 2、修复自定义列表,编辑时保存出错!create状态改错。 3、修复模型添加字段,修改字段时,获取setting的相关配置获取错误。 4、修复当文件名后缀为大写时上传后显示的是未知附件图标。 5、修复推荐当存储数量的问题。 6、修改添加字段时的正则验证。 7、修复评论字段,没内容是,出现NULL,造成SQL失败或者错误。 8、修复添加栏目/修改栏目时,角色权限问题。 9、修复高级配置"子目录缓存"选项错误。 10、修复插件升级,更新版本号错误。 [优化] 1、更新云平台,能返回详细错误信息。 2、万能字段支持系统模板引擎处理!也就是支持PHP和支持模板标签等。 3、支持批量添加栏目。 4、编辑简洁版,增加字体颜色设置,同时升级到1.3.6。 5、优化默认的分页函数page。 6、增加分页模板可以直接在设置里的高级设置里进行修改功能。 7、修改缓存更新时,清理方式。 8、优化URL规则添加、编辑。过滤空格等。 9、后台信息管理列表,增加访问该栏目前台页面。 10、插件安装支持获取错误信息。 11、更新内容添加时的栏目列表导航,和角色授权列表。 12、栏目授权列表,支持全选。 13、增加栏目禁止访问动态页面,和内容页禁止访问动态页面。 14、高级配置时数据缓存类型更改时,测试是否支持!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值