当前位置:首页 > PHP教程 > php高级应用 > 列表

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

发布:smiling 来源: PHP粉丝网  添加日期:2021-05-04 16:32:18 浏览: 评论:0 

这篇文章主要介绍了PHP+jquery+ajax实现即时聊天功能的方法,实例分析了php聊天功能的信息无刷新提交方法,以及信息发送处理等功能,具有一定的参考借鉴价值,需要的朋友可以参考下

本文实例讲述了PHP+jquery+ajax实现即时聊天功能的方法。分享给大家供大家参考。具体如下:

这是一个简单的利用jquery与php做的一个聊天室的源码,我们这里定时利用ajax读取数据库并进行刷新了,下面直接参上源码,实例代码如下:

index.html页面如下:

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  2. <html xmlns="http://www.w3.org/1999/xhtml"
  3. <head> 
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  5. <title>无标题文档</title> 
  6. <script src="js/jquery-1.9.1.min.js"></script> 
  7. <script> 
  8. var chat = { 
  9.  init:function(){ 
  10.   chat.first(); 
  11.   $('#chat_btn').unbind('click').click(function(){ 
  12.    chat.send(); 
  13.   }); 
  14.   $('#my_chat').keyup(function(){ 
  15.    if(event.keyCode == 13){ 
  16.     chat.send(); 
  17.    } 
  18.   }); 
  19.  }, 
  20.  first:function(){ 
  21.   $.getJSON('data.php',{ 
  22.    action:'first'
  23.    type:'l' 
  24.   },function(data){ 
  25.    chat.btn_status._true(); 
  26.    $('#mwebtime').html(data.time); 
  27.    $('#chat textarea').val(data.chat); 
  28.    $('#chat textarea').stop(true,true).animate({scrollTop:9999}, 1); 
  29.    chat.socket(); 
  30.   }); 
  31.  }, 
  32.  send:function(){ 
  33.   chat.btn_status._false(); 
  34.   $.getJSON('send.php',{ 
  35.    txt:$('#my_chat').val(), 
  36.    type:'l' 
  37.   },function(data){ 
  38.    if(data.status==200){ 
  39.     chat.btn_status._false(); 
  40.     $('#my_chat').val(''); 
  41.     setTimeout(function(){ 
  42.      chat.btn_status._true(); 
  43.     },2000); 
  44.    } 
  45.   }); 
  46.  }, 
  47.  socket:function(){ 
  48.   $.getJSON('data.php',{ 
  49.    action:'while'
  50.    type:'l' 
  51.   },function(data){ 
  52.    $('#mwebtime').html(data.time); 
  53.    $('#chat textarea').val(data.chat); 
  54.    $('#chat textarea').stop(true,true).animate({scrollTop:9999}, 1);  
  55.    chat.socket(); 
  56.   }); 
  57.  }, 
  58.  btn_status:{ 
  59.   _false:function(){ 
  60.    $('#chat_btn').html('等待').attr('disabled',true); 
  61.   }, 
  62.   _true:function(){ 
  63.    $('#chat_btn').html('发言').attr('disabled',false); 
  64.   } 
  65.  } 
  66. chat.init(); 
  67. </script> 
  68. </head> 
  69.  
  70. <body> 
  71. <div id="chat"
  72.  <textarea wrap="physical" style="line-height:20px;font-size:12px;height:100px;width:200px;"></textarea> 
  73.  <BR /> 
  74.  <input id="my_chat" type="text" /> 
  75.  <button id="chat_btn" disabled="disabled">发言</button> 
  76. </div> 
  77. <div id="mwebtime"></div> 
  78. </body> 
  79. </html> 

data.php页面如下:

  1. <?php 
  2. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
  3. header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");  
  4. header("Cache-Control: no-cache, must-revalidate");  
  5. header("Pramga: no-cache"); 
  6. set_time_limit(0); 
  7. $get = $_GET['action']; 
  8. $type = $_GET['type']; 
  9. $file = $type.'.txt'
  10. if(isset($get) && isset($type) && file_exists($file)){ 
  11.  switch($get){ 
  12.   case 'first'
  13.    $chat = file_get_contents($file); 
  14.    $json=array
  15.     'status' => 200, 
  16.     'time' => gmdate("s"), 
  17.     'chat' => $chat
  18.    ); 
  19.    echo json_encode($json); 
  20.    break
  21.   case 'while'
  22.    $oldsize = filesize($file); 
  23.    $newsize = filesize($file); 
  24.    while(true){ 
  25.     if($oldsize!=$newsize){ 
  26.      $chat = file_get_contents($file); 
  27.      $json=array
  28.       'status' => 200, 
  29.       'time' => gmdate("s"), 
  30.       'chat' => $chat
  31.      ); 
  32.      echo json_encode($json); 
  33.      exit
  34.     } 
  35.     clearstatcache(); 
  36.     $newsize = filesize($file); 
  37.     usleep(10000); 
  38.    } 
  39.    break
  40.  } 
  41. ?> 

send.php页面如下:

  1. <?php 
  2. $json = array(); 
  3. $txt = isset($_GET['txt'])?$_GET['txt']:''
  4. $type = isset($_GET['type'])?$_GET['type']:''
  5. if($txt!=''){ 
  6.  $file = $type.".txt"
  7.  if(file_exists($file)){ 
  8.   $fp = fopen($file,"a"); 
  9.   $str = "rn".'Admin:'.$txt
  10.   //$str = $txt."n"//linux; 
  11.   fwrite($fp$str); 
  12.   fclose($fp); 
  13.   $json['status']=200; 
  14.   echo json_encode($json); 
  15.   exit
  16.  } 
  17. ?> 

希望本文所述对大家的php程序设计有所帮助。

Tags: PHP+jquery+ajax

分享到: