ThinkPHP结合ajax、Mysql实现的客户端通信功能代码示例
2023-06-13 09:15:32 时间
该实例通过ThinkPHP结合Ajax与mysql实现了客户端的通信功能,具体如下:
1、使用js的ajax局部刷新功能,每次刷新将数据库中读取出的新记录插入到页面的显示区域,代码如下:
window.onload=setInterval(showWords1000);//加载完成之后开始执行刷新功能
functionshowWords()//刷新时被调用函数,实现ajax请求 { xmlHttp=GetXmlHttpObject();//从自定义的函数中获取请求对象。 if(xmlHttp==null) { alert("BrowserdoesnotsupportHTTPRequest") return; } varurl="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();//上面传参之后,这句可要可不要 } functionstateChanged()//实现向页面插入数据功能 { varstr=""; if(xmlHttp.readyState==4||xmlHttp.readyState=="complete") { eval("vararrs="+xmlHttp.responseText);//获取由action响应输出的数据,因为数据室php数组格式,需用eval或json转化成js数组格式 varchdiv=$("#conversation_history");//通信聊天记录框 for(varj=0;j<arrs.length;j++){//循环插入数据 varobj=$("<tr><td><h3></h3></td><td></td></tr>");//定义页面当中记录框的html格式代码 vari=$("<i> "+arrs[j].times+"</i><inputtype="hidden"value=""+arrs[j].times+"">");//i标签i为thinkphp定义的直接将时间输出到input隐藏并且存储得到数据里面的聊天发送时间 varp=$("<p></p>"); p.html(arrs[j].content);//聊天内容 p.append(i); varh3value=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);//滚动到底部 } }
functionGetXmlHttpObject()//定义ajax请求对象 { varxmlHttp=null; try { //Firefox,Opera8.0+,Safari xmlHttp=newXMLHttpRequest(); } catch(e) { //InternetExplorer try { xmlHttp=newActiveXObject("Msxml2.XMLHTTP"); } catch(e) { xmlHttp=newActiveXObject("Microsoft.XMLHTTP"); } } returnxmlHttp; }
2、action控制器,代码如下:
functionrefresh(){ $data_id=I("get.data_id");//获得嘉宾id $lasttime=I("get.lasttime"); //print_r(date("Y-m-dH:i:s",$lasttime)); if(!$data_id) $this->error("该访谈不存在!"); $data=M("ksks_words_memoir"); //print_r(date("Y-m-dH:i:s",$lasttime)); if(!$data) $this->error("初始化数据失败!"); //$words=$data->where(array("dataid"=>$data_id))->order("timeasc")->select(); //print_r($data->where(array("time"=>$lasttime))->select()); $where["time"]=array("gt",$lasttime); $count=$data->where($where)->count(); //print_r(date("Y-m-dH:i:s",$lasttime)); $words=$data->where($where)->select(); $datas=array();//要返回的数组 $i=0; foreach($wordsas$word) { $datas[$i]["name"]=$word["name"]; $datas[$i]["content"]=$word["content"]; $datas[$i]["times"]=date("Y-m-dH:i:s",$word["time"]); $lasttime=$word["time"]; $i=$i+1; } setCookie("lasttime",$lasttime); $datas=json_encode($datas); //$this->cache(); echo$datas; }
3、聊天页面,代码如下:
<volistname="words"id="vo"> <tr> <td><h3<ifcondition="$vo["name"]=="主持人"">class="presenter"</if>>{$vo.name}:</h3></td> <td> <div>{$vo.content}<i> {$vo.time|date="Y-m-dH:i:s",###}</i> <inputtype="hidden"name="time"value="{$vo.time}"> </div> </td> </tr> </volist>
相关文章
- MySQL Error number: MY-013848; Symbol: ER_MY_MALLOC_USING_STD_MALLOC; SQLSTATE: HY000 报错 故障修复 远程处理
- 【MySQL】类型知多少?(mysql的类型)
- MySQL:建立表的语句简介(mysql建立表的语句)
- MySQL客户端软件:打开更简单的数据库访问之门(mysql客户端软件)
- 中的应用Java中MySQL的灵活运用(mysql在java代码)
- MySQL的写入命令指南(mysql写入命令)
- 同步MySQL多服务器:构建完美的数据架构(mysql多服务器的同步)
- MySQL图形客户端:简单易用的操作体验(mysql图形客户端)
- MySQL查询语句:如何取前十条数据(mysql取前十条)
- 如何解决MySQL无法卸载问题?(mysql无法卸载)
- MySQL安全设置:限制外网访问(mysql限制外网访问)
- MySQL数据库性能优化实用指南(mysql优化文档)
- 圆满结束:MySQL 的实施与运行(round mysql)
- MySQL客户端安装指南:快速图解攻略(mysql客户端安装图解)
- MySQL 安卓客户端:让数据库管理更方便(mysql安卓客户端)
- MySQL使用详解:全面学习MYSQL技术(mysql大全)
- 如何正确安装Mysql数据库(如何 安装 mysql)
- 深入MySQL学习如何进行3级排序(mysql中3级排序)
- 使用MySQL打造个人相册网站的必备指南(mysql 个人相册网站)
- 使用Ajax实现MySQL数据库操作(ajax操作mysql)
- 在CMD中快速创建MySQL数据库表(cmd中给mysql建表)
- MySQL 一万个客户端,如何优化数据库性能(mysql一万个客户端)
- MYSQL收费了 了解MySQL开源版的最新政策(mysql不再免费了吗)
- MySQL客户端下载指南快速获取该数据库软件并安装使用(mysql下载客户端)
- MySQL下载及安装教程快速掌握MySql下载及安装方法,更高效地使用MySql数据库(mysql下载了在哪)