PHP+jquery+ajax实现即时聊天功能实例

前端技术 2023/09/07 PHP

本文实例讲述了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程序设计有所帮助。

本文地址:https://www.stayed.cn/item/18958

转载请注明出处。

本站部分内容来源于网络,如侵犯到您的权益,请 联系我

我的博客

人生若只如初见,何事秋风悲画扇。