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程序中的常见漏洞进行攻击
Oct 09 PHP
安装APACHE
Jan 15 PHP
php的curl实现get和post的代码
Aug 23 PHP
PHP通用检测函数集合
Feb 08 PHP
PHP fgetcsv 定义和用法(附windows与linux下兼容问题)
May 29 PHP
关于PHP自动判断字符集并转码的详解
Jun 26 PHP
php简单实现屏蔽指定ip段用户的访问
Apr 29 PHP
PHP中的switch语句的用法实例详解
Oct 21 PHP
基于PHP实现等比压缩图片大小
Mar 04 PHP
PHP实现webshell扫描文件木马的方法
Jul 31 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
php使用goto实现自动重启swoole、reactphp、workerman服务的代码
Apr 13 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中对用户身份认证实现两种方法
2011/06/04 PHP
$_GET['goods_id']+0 的使用详解
2013/06/06 PHP
ThinkPHP内置jsonRPC的缺陷分析
2014/12/18 PHP
javascript实现的动态文字变换
2007/07/28 Javascript
清除网页历史记录,屏蔽后退按钮!
2008/12/22 Javascript
javascript内置对象arguments详解
2014/03/16 Javascript
详细解读AngularJS中的表单验证编程
2015/06/19 Javascript
JavaScript代码判断点击第几个按钮
2015/12/13 Javascript
BootStrap实用代码片段之一
2016/03/22 Javascript
微信JS接口大全
2016/08/25 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
纯js实现悬浮按钮组件
2016/12/17 Javascript
js实现类bootstrap模态框动画
2017/02/07 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
2017/04/20 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
对angularJs中自定义指令replace的属性详解
2018/10/09 Javascript
傻瓜式vuex语法糖kiss-vuex整理
2018/12/21 Javascript
Python函数式编程指南(四):生成器详解
2015/06/24 Python
在arcgis使用python脚本进行字段计算时是如何解决中文问题的
2015/10/18 Python
初步剖析C语言编程中的结构体
2016/01/16 Python
python机器学习之贝叶斯分类
2018/03/26 Python
pymongo中聚合查询的使用方法
2019/03/22 Python
在Pytorch中使用样本权重(sample_weight)的正确方法
2019/08/17 Python
python3.9实现pyinstaller打包python文件成exe
2020/12/13 Python
CSS3地图动态实例代码(圆圈向外扩散)
2018/06/15 HTML / CSS
详解CSS3的opacity属性设置透明效果的用法
2016/05/09 HTML / CSS
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
美国一家运动专业鞋类零售商:Warehouse Shoe Sale(WSS)
2018/03/28 全球购物
人力资源专员岗位职责
2014/01/30 职场文书
高中毕业自我评价
2014/02/08 职场文书
2014厂务公开实施方案
2014/02/17 职场文书
超市开业庆典策划方案
2014/05/14 职场文书
党员教师群众路线对照检查材料思想汇报
2014/09/29 职场文书
2015年党支部公开承诺书
2015/01/22 职场文书
大学组织委员竞选稿
2015/11/21 职场文书
Spring依赖注入多种类型数据的示例代码
2022/03/31 Java/Android