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 print EOF实现方法
May 21 PHP
PHP 木马攻击防御技巧
Jun 13 PHP
PHP Memcached应用实现代码
Feb 08 PHP
PHP操作数组相关函数
Feb 03 PHP
详解php的魔术方法__get()和__set()使用介绍
Sep 19 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(四)
Jun 23 PHP
php中使用gd库实现下载网页中所有图片
May 12 PHP
PHP中for循环与foreach的区别
Mar 06 PHP
php curl上传、下载、https登陆实现代码
Jul 23 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
PHP 模拟登陆功能实例详解
Sep 10 PHP
如何解决php-fpm启动不了问题
Nov 17 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实现PDO操作mysql存储过程示例
2019/02/13 PHP
Thinkphp5框架ajax接口实现方法分析
2019/08/28 PHP
Js的MessageBox
2006/12/03 Javascript
JS小功能(button选择颜色)简单实例
2013/11/29 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
Juery解决tablesorter中文排序和字符范围的方法
2015/05/06 Javascript
jQuery鼠标经过方形图片切换成圆边效果代码分享
2015/08/20 Javascript
举例讲解JavaScript中关于对象操作的相关知识
2015/11/16 Javascript
jQuery实现带水平滑杆的焦点图动画插件
2016/03/08 Javascript
vue.js响应式原理解析与实现
2020/06/22 Javascript
一篇文章介绍redux、react-redux、redux-saga总结
2019/05/23 Javascript
[01:12]DOTA2次级职业联赛 - Newbee.Y 战队宣传片
2014/12/01 DOTA
Python的装饰器模式与面向切面编程详解
2015/06/21 Python
Python实现运行其他程序的四种方式实例分析
2017/08/17 Python
TensorFlow在MAC环境下的安装及环境搭建
2017/11/14 Python
python数据分析数据标准化及离散化详解
2018/02/26 Python
Python实现读取机器硬件信息的方法示例
2018/06/09 Python
Tensorflow 同时载入多个模型的实例讲解
2018/07/27 Python
Python3爬虫教程之利用Python实现发送天气预报邮件
2018/12/16 Python
钉钉群自定义机器人消息Python封装的实例
2019/02/20 Python
Python 可变类型和不可变类型及引用过程解析
2019/09/27 Python
完美解决pycharm导入自己写的py文件爆红问题
2020/02/12 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
如何用Python和JS实现的Web SSH工具
2021/02/23 Python
深入浅析CSS3中的Flex布局整理
2020/04/27 HTML / CSS
编写函数,将一个3*3矩阵转置
2013/10/09 面试题
怎样在程序里获得一个空指针
2015/01/24 面试题
物业管理员岗位职责范文
2013/11/25 职场文书
北体毕业生求职信
2014/02/28 职场文书
学校周年庆活动方案
2014/08/22 职场文书
党员先进性教育整改措施
2014/09/18 职场文书
2014年安全员工作总结
2014/11/13 职场文书
2015年医院药剂科工作总结
2015/05/04 职场文书
CSS3新特性详解(五):多列columns column-count和flex布局
2021/04/30 HTML / CSS
使用Python通过企业微信应用给企业成员发消息
2022/04/18 Python