您好,登錄后才能下訂單哦!
這篇文章將為大家詳細(xì)講解有關(guān)ThinkPHP中的客戶端通信怎么利用ajax與Mysql實現(xiàn),文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
具體如下:
1、使用js的ajax局部刷新功能,每次刷新將數(shù)據(jù)庫中讀取出的新記錄插入到頁面的顯示區(qū)域,代碼如下:
window.onload =setInterval(showWords1000);//加載完成之后開始執(zhí)行刷新功能
function showWords()//刷新時被調(diào)用函數(shù),實現(xiàn)ajax請求 { xmlHttp=GetXmlHttpObject();//從自定義的函數(shù)中獲取請求對象。 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傳的參數(shù),用于查詢數(shù)據(jù)庫的id url=url+"&lasttime="+$("i").last().siblings('input').val();//lasttime是頁面顯示數(shù)據(jù)的最后一個記錄的時間戳,查找時根據(jù)大于這個時間戳的條件查找 xmlHttp.onreadystatechange=stateChanged;//響應(yīng)狀態(tài)改變時調(diào)用的函數(shù) xmlHttp.open("GET",url,true);//使用get方法提交 xmlHttp.send();//上面?zhèn)鲄⒅?,這句可要可不要 } function stateChanged() //實現(xiàn)向頁面插入數(shù)據(jù)功能 { var str =""; if(xmlHttp.readyState==4 || xmlHttp.readyState=="complete") { eval("var arrs="+xmlHttp.responseText);//獲取由action響應(yīng)輸出的數(shù)據(jù),因為數(shù)據(jù)室php數(shù)組格式,需用eval或json轉(zhuǎn)化成js數(shù)組格式 var chdiv=$("#conversation_history");//通信聊天記錄框 for(var j=0;j<arrs.length;j++){//循環(huán)插入數(shù)據(jù) var obj=$("<tr><td><h4></h4></td><td></td></tr>");//定義頁面當(dāng)中記錄框的html格式代碼 var i=$("<i> "+arrs[j].times+"</i><input type='hidden' value='"+arrs[j].times+"'>");//i標(biāo)簽i為thinkphp定義的直接將時間輸出到input隱藏并且存儲得到數(shù)據(jù)里面的聊天發(fā)送時間 var p=$("<p></p>"); p.html(arrs[j].content);//聊天內(nèi)容 p.append(i); var h4value=arrs[j].name;//發(fā)送的作者 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("初始化數(shù)據(jù)失敗!"); //$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();//要返回的數(shù)組 $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> {$vo.time|date="Y-m-d H:i:s",###}</i> <input type="hidden" name="time" value="{$vo.time}"> </div> </td> </tr> </volist>
關(guān)于ThinkPHP中的客戶端通信怎么利用ajax與Mysql實現(xiàn)就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。