ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
ThinkPHP  /  管理员 发布于 8年前   183
该实例通过ThinkPHP结合Ajax与mysql实现了客户端的通信功能,具体如下: 1、使用js的ajax局部刷新功能,每次刷新将数据库中读取出的新记录插入到页面的显示区域,代码如下: 2、action控制器,代码如下: 3、聊天页面,代码如下: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
");//定义页面当中记录框的html格式代码 var i=$(" "+arrs[j].times+"");//i标签i为thinkphp定义的直接将时间输出到input隐藏并且存储得到数据里面的聊天发送时间 var 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; }
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; }
class="presenter">{$vo.name}:
{$vo.content} {$vo.time|date="Y-m-d H:i:s",###} 您可能感兴趣的文章:
122 在
学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..123 在
Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..原梓番博客 在
在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..博主 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..1111 在
佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
Copyright·© 2019 侯体宗版权所有·
粤ICP备20027696号