PHP100 2019-03-28
本文实例讲述了PHP+jquery+ajax实现即时聊天功能的方法。分享给大家供大家参考。具体如下:
这是一个简单的利用jquery与php做的一个聊天室的源码,我们这里定时利用ajax读取数据库并进行刷新了,下面直接参上源码,实例代码如下:
index.html页面如下:
代码如下:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="js/jquery-1.9.1.min.js"></script> <script> var chat = { init:function(){ chat.first(); $('#chat_btn').unbind('click').click(function(){ chat.send(); }); $('#my_chat').keyup(function(){ if(event.keyCode == 13){ chat.send(); } }); }, first:function(){ $.getJSON('data.php',{ action:'first', type:'l' },function(data){ chat.btn_status._true(); $('#mwebtime').html(data.time); $('#chat textarea').val(data.chat); $('#chat textarea').stop(true,true).animate({scrollTop:9999}, 1); chat.socket(); }); }, send:function(){ chat.btn_status._false(); $.getJSON('send.php',{ txt:$('#my_chat').val(), type:'l' },function(data){ if(data.status==200){ chat.btn_status._false(); $('#my_chat').val(''); setTimeout(function(){ chat.btn_status._true(); },2000); } }); }, socket:function(){ $.getJSON('data.php',{ action:'while', type:'l' },function(data){ $('#mwebtime').html(data.time); $('#chat textarea').val(data.chat); $('#chat textarea').stop(true,true).animate({scrollTop:9999}, 1); chat.socket(); }); }, btn_status:{ _false:function(){ $('#chat_btn').html('等待').attr('disabled',true); }, _true:function(){ $('#chat_btn').html('发言').attr('disabled',false); } } } chat.init(); </script> </head> <body> <div id="chat"> <textarea wrap="physical" style="line-height:20px;font-size:12px;height:100px;width:200px;"></textarea> <BR /> <input id="my_chat" type="text" /> <button id="chat_btn" disabled="disabled">发言</button> </div> <div id="mwebtime"></div> </body> </html>
data.php页面如下:
代码如下:
<?php header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT"); header("Cache-Control: no-cache, must-revalidate"); header("Pramga: no-cache"); set_time_limit(0); $get = $_GET['action']; $type = $_GET['type']; $file = $type.'.txt'; if(isset($get) && isset($type) && file_exists($file)){ switch($get){ case 'first': $chat = file_get_contents($file); $json=array( 'status' => 200, 'time' => gmdate("s"), 'chat' => $chat, ); echo json_encode($json); break; case 'while': $oldsize = filesize($file); $newsize = filesize($file); while(true){ if($oldsize!=$newsize){ $chat = file_get_contents($file); $json=array( 'status' => 200, 'time' => gmdate("s"), 'chat' => $chat, ); echo json_encode($json); exit; } clearstatcache(); $newsize = filesize($file); usleep(10000); } break; } } ?>
send.php页面如下:
代码如下:
<?php $json = array(); $txt = isset($_GET['txt'])?$_GET['txt']:''; $type = isset($_GET['type'])?$_GET['type']:''; if($txt!=''){ $file = $type.".txt"; if(file_exists($file)){ $fp = fopen($file,"a"); $str = "rn".'Admin:'.$txt; //$str = $txt."n"//linux; fwrite($fp, $str); fclose($fp); $json['status']=200; echo json_encode($json); exit; } } ?>
希望本文所述对大家的php程序设计有所帮助。