该实例通过thinkphp结合ajax与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;jerror(该访谈不存在!); $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、聊天页面,代码如下:
{$vo.name}: {$vo.content} {$vo.time|date=y-m-d h:i:s,###}
http://www.bkjia.com/phpjc/825524.htmlwww.bkjia.comtruehttp://www.bkjia.com/phpjc/825524.htmltecharticle该实例通过thinkphp结合ajax与mysql实现了客户端的通信功能,具体如下: 1、使用js的ajax局部刷新功能,每次刷新将数据库中读取出的新记录插...
