ThinkPHP結合ajax、Mysql實現的用戶端通訊功能程式碼範例_PHP教程

來源:互聯網
上載者:User
該執行個體通過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

");//定義頁面當中記錄框的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;   }

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、聊天頁面,代碼如下:

class="presenter">{$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局部重新整理功能,每次重新整理將資料庫中讀取出的新記錄插...

  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.