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
php下检测字符串是否是utf8编码的代码
Jun 28 PHP
php下过滤html代码的函数 提高程序安全性
Mar 02 PHP
PHP extract 将数组拆分成多个变量的函数
Jun 30 PHP
PHP MemCached 高级缓存应用代码
Aug 05 PHP
去除php注释和去除空格函数分享
Mar 13 PHP
ThinkPHP3.2.2的插件控制器功能
Mar 05 PHP
Laravel 5框架学习之用户认证
Apr 09 PHP
php生成年月日下载列表的方法
Apr 24 PHP
php微信公众平台开发之获取用户基本信息
Aug 17 PHP
PHP中加速、缓存扩展的区别和作用详解(eAccelerator、memcached、xcache、APC )
Jul 09 PHP
YII框架常用技巧总结
Apr 27 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,ASP.JAVA,JAVA代码格式化工具整理
2010/06/15 PHP
PHP 提取图片img标记中的任意属性的简单实例
2013/12/10 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
PHP中Http协议post请求参数
2015/11/02 PHP
详解PHP对数组的定义以及数组的创建方法
2015/11/27 PHP
PHP延迟静态绑定的深入讲解
2018/04/02 PHP
javascript转换字符串为dom对象(字符串动态创建dom)
2010/05/10 Javascript
JS通过ajax动态读取xml文件内容的方法
2015/03/24 Javascript
jQuery树形下拉菜单特效代码分享
2015/08/15 Javascript
jquery中val()方法是从最后一个选项往前读取的
2015/09/06 Javascript
Jquery 垂直多级手风琴菜单附源码下载
2015/11/17 Javascript
Angular2学习笔记——详解NgModule模块
2016/12/02 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图的组合双轴图效果示例【附demo源码下载】
2017/03/09 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
mpvue将vue项目转换为小程序
2018/09/30 Javascript
js实现带有动画的返回顶部
2020/08/09 Javascript
用Javascript实现发送短信验证码间隔功能
2021/02/08 Javascript
[02:15]2014DOTA2国际邀请赛 赛后退役选手回顾
2014/08/01 DOTA
[40:19]完美世界DOTA2联赛PWL S3 Rebirth vs CPG 第二场 12.18
2020/12/19 DOTA
python计算auc指标实例
2017/07/13 Python
Python的SimpleHTTPServer模块用处及使用方法简介
2018/01/22 Python
Python实现的读取电脑硬件信息功能示例
2018/05/30 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
Python中一般处理中文的几种方法
2019/03/06 Python
Django框架ORM数据库操作实例详解
2019/11/07 Python
CSS3动画之利用requestAnimationFrame触发重新播放功能
2019/09/11 HTML / CSS
兼职业务员岗位职责
2014/01/01 职场文书
社会保险接收函
2014/01/12 职场文书
小学六年级学生评语
2014/04/22 职场文书
2014年学校领导班子对照检查材料
2014/09/19 职场文书
2016新年年会主持词
2015/07/06 职场文书
2016高考寄语集锦
2015/12/04 职场文书
MySQL一些常用高级SQL语句
2021/07/03 MySQL
从QQtabBar看css命名规范BEM的详细介绍
2021/08/07 HTML / CSS
安装Ruby和 Rails的详细步骤
2022/04/19 Ruby
使用CSS实现六边形的图片效果
2022/08/05 HTML / CSS