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

PHP jquery ajax实现即时聊天功能

发布:smiling 来源: PHP粉丝网  添加日期:2014-09-22 10:31:48 浏览: 评论:0 

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

  1. //index.html 
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
  3. <html xmlns="http://www.w3.org/1999/xhtml"
  4. <head> 
  5. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
  6. <title>无标题文档</title> 
  7. <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script> 
  8. <script> 
  9. var chat = { 
  10.  init:function(){ 
  11.   chat.first(); 
  12.   $('#chat_btn').unbind('click').click(function(){ 
  13.    chat.send(); 
  14.   }); 
  15.   $('#my_chat').keyup(function(){ 
  16.    if(event.keyCode == 13){ 
  17.     chat.send(); 
  18.    } 
  19.   }); www.111cn.net 
  20.  }, 
  21.  first:function(){ 
  22.   $.getJSON('data.php',{ 
  23.    action:'first'
  24.    type:'l' 
  25.   },function(data){ 
  26.    chat.btn_status._true(); 
  27.    $('#mwebtime').html(data.time); 
  28.    $('#chat textarea').val(data.chat); 
  29.    $('#chat textarea').stop(true,true).animate({scrollTop:9999}, 1); 
  30.    chat.socket(); 
  31.   }); 
  32.  }, 
  33.  send:function(){ 
  34.   chat.btn_status._false(); 
  35.   $.getJSON('send.php',{ 
  36.    txt:$('#my_chat').val(), 
  37.    type:'l' 
  38.   },function(data){ 
  39.    if(data.status==200){ 
  40.     chat.btn_status._false(); 
  41.     $('#my_chat').val(''); 
  42.     setTimeout(function(){ 
  43.      chat.btn_status._true(); 
  44.     },2000); 
  45.    } 
  46.   }); 
  47.  }, 
  48.  socket:function(){ 
  49.   $.getJSON('data.php',{ 
  50.    action:'while'
  51.    type:'l' 
  52.   },function(data){ 
  53.    $('#mwebtime').html(data.time); 
  54.    $('#chat textarea').val(data.chat); 
  55.    $('#chat textarea').stop(true,true).animate({scrollTop:9999}, 1);  
  56.    chat.socket(); 
  57.   }); 
  58.  }, 
  59.  btn_status:{ 
  60.   _false:function(){ 
  61.    $('#chat_btn').html('等待').attr('disabled',true); 
  62.   }, 
  63.   _true:function(){ 
  64.    $('#chat_btn').html('发言').attr('disabled',false); 
  65.   } 
  66.  } 
  67. chat.init(); 
  68. </script> 
  69. </head> 
  70.   
  71. <body> 
  72. <div id="chat"
  73.  <textarea wrap="physical" style="line-height:20px;font-size:12px;height:100px;width:200px;"></textarea> 
  74.  <BR /> 
  75.  <input id="my_chat" type="text" /> 
  76.  <button id="chat_btn" disabled="disabled">发言</button> 
  77. </div> 
  78. <div id="mwebtime"></div> 
  79. </body> 
  80. </html> 
  81. data.php 
  82. <?php 
  83. header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");  
  84. header("Last-Modified: ".gmdate("D, d M Y H:i:s")." GMT");  
  85. header("Cache-Control: no-cache, must-revalidate");  
  86. header("Pramga: no-cache"); 
  87. set_time_limit(0); 
  88. $get = $_GET['action']; 
  89. $type = $_GET['type']; 
  90. $file = $type.'.txt'
  91. if(isset($get) && isset($type) && file_exists($file)){ 
  92.  switch($get){ 
  93.   case 'first'
  94.    $chat = file_get_contents($file); 
  95.    $json=array
  96.     'status' => 200, 
  97.     'time' => gmdate("s"), 
  98.     'chat' => $chat
  99.    ); 
  100.    echo json_encode($json); 
  101.    break; www.phpfensi.com 
  102.   case 'while'
  103.    $oldsize = filesize($file); 
  104.    $newsize = filesize($file); 
  105.    while(true){ 
  106.     if($oldsize!=$newsize){ 
  107.      $chat = file_get_contents($file); 
  108.      $json=array
  109.       'status' => 200, 
  110.       'time' => gmdate("s"), 
  111.       'chat' => $chat
  112.      ); 
  113.      echo json_encode($json); 
  114.      exit
  115.     } 
  116.     clearstatcache(); 
  117.     $newsize = filesize($file); 
  118.     usleep(10000); 
  119.    } 
  120.    break
  121.  } 
  122. ?> 
  123. send.php 
  124. <?php 
  125. $json = array(); 
  126. $txt = isset($_GET['txt'])?$_GET['txt']:''
  127. $type = isset($_GET['type'])?$_GET['type']:''
  128. if($txt!=''){ 
  129.  $file = $type.".txt"
  130.  if(file_exists($file)){ 
  131.   $fp = fopen($file,"a"); 
  132.   $str = "rn".'Admin:'.$txt
  133.   //$str = $txt."n"//linux; 
  134.   fwrite($fp$str); 
  135.   fclose($fp); 
  136.   $json['status']=200; 
  137.   echo json_encode($json); 
  138.   exit
  139.  } 
  140. ?>

Tags: PHP jquery ajax即时聊天

分享到: