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


Posted in PHP onDecember 23, 2014

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

PHP 相关文章推荐
PHP&amp;MYSQL服务器配置说明
Oct 09 PHP
利用static实现表格的颜色隔行显示
Oct 09 PHP
html中select语句读取mysql表中内容
Oct 09 PHP
php 上传文件类型判断函数(避免上传漏洞 )
Jun 08 PHP
php注销代码(session注销)
May 31 PHP
php中让上传的文件大小在上传前就受限制的两种解决方法
Jun 24 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
Apr 05 PHP
php+js实现异步图片上传实例分享
Jun 02 PHP
php连接oracle数据库及查询数据的方法
Dec 29 PHP
php实现汉字验证码和算式验证码的方法
Mar 07 PHP
PHP实现的简单网络硬盘
Jul 29 PHP
PHP性能测试工具xhprof安装与使用方法详解
Apr 29 PHP
PHP采集静态页面并把页面css,img,js保存的方法
Dec 23 #PHP
微信公众平台消息接口校验与消息接口响应实例
Dec 23 #PHP
php获取QQ头像并显示的方法
Dec 23 #PHP
关于URL最大长度限制的相关资料查证
Dec 23 #PHP
php实现基于微信公众平台开发SDK(demo)扩展的方法
Dec 22 #PHP
php微信公众开发之获取周边酒店信息的方法
Dec 22 #PHP
php天翼开放平台短信发送接口实现方法
Dec 22 #PHP
You might like
无数据库的详细域名查询程序PHP版(2)
2006/10/09 PHP
php 前一天或后一天的日期
2008/06/28 PHP
php 图片上传类代码
2009/07/17 PHP
微信支付开发告警通知实例
2016/07/12 PHP
PHP设计模式之适配器模式定义与用法详解
2018/04/03 PHP
前后台交互过程中json格式如何解析以及如何生成
2012/12/26 Javascript
js操作table示例(个人心得)
2013/11/29 Javascript
以JSON形式将JS中Array对象数组传至后台的方法
2014/01/06 Javascript
iframe里使用JavaScript控制主页转向的方法
2015/04/03 Javascript
js验证真实姓名与身份证号是否匹配
2015/10/13 Javascript
js事件处理程序跨浏览器解决方案
2016/03/27 Javascript
jquery UI Datepicker时间控件的使用及问题解决
2016/04/28 Javascript
Bootstrap3.0学习教程之JS折叠插件
2016/05/27 Javascript
jQuery Ajax 异步加载显示等待效果代码分享
2016/08/01 Javascript
JS实现的系统调色板完整实例
2016/12/21 Javascript
JS中判断某个字符串是否包含另一个字符串的五种方法
2018/05/03 Javascript
深入浅出了解Node.js Streams
2019/05/27 Javascript
JS根据json数组多个字段排序及json数组常用操作
2019/06/06 Javascript
jQuery实现鼠标拖拽登录框移动效果
2020/09/13 jQuery
python通过scapy获取局域网所有主机mac地址示例
2014/05/04 Python
pygame学习笔记(1):矩形、圆型画图实例
2015/04/15 Python
pytorch cnn 识别手写的字实现自建图片数据
2018/05/20 Python
python实现汉诺塔算法
2021/03/01 Python
python实现递归查找某个路径下所有文件中的中文字符
2019/08/31 Python
Python函数中的可变长参数详解
2019/09/12 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
python爬虫用mongodb的理由
2020/07/28 Python
python性能测试工具locust的使用
2020/12/28 Python
Pycharm在指定目录下生成文件和删除文件的实现
2020/12/28 Python
一款CSS3实现多功能下拉菜单(带分享按)的教程
2014/11/05 HTML / CSS
详解CSS3选择器的使用方法汇总
2015/11/24 HTML / CSS
廉价连衣裙和婚纱礼服在线销售:Tbdress
2019/02/28 全球购物
Skechers越南官方网站:来自美国的运动休闲品牌
2021/02/22 全球购物
2014年感恩母亲演讲稿
2014/05/27 职场文书
合伙经营协议书范本(通用版)
2014/12/03 职场文书
【海涛dota解说】DCG联赛第一周 LGD VS DH
2022/04/01 DOTA