温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

ThinkPHP中的客户端通信怎么利用ajax与Mysql实现

发布时间:2020-12-19 16:18:14 来源:亿速云 阅读:223 作者:Leah 栏目:开发技术

这篇文章将为大家详细讲解有关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;j<arrs.length;j++){//循环插入数据         var obj=$("<tr><td><h4></h4></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 h4value=arrs[j].name;//发送的作者     obj.find("h4").html(h4value+":");     if(h4value=="主持人")     {obj.find("h4").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><h4 <if condition="$vo['name']=='主持人'">class="presenter"</if>>{$vo.name}:</h4></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>

关于ThinkPHP中的客户端通信怎么利用ajax与Mysql实现就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI