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 相关文章推荐
同时提取多条新闻中的文本一例
Oct 09 PHP
WINXP下apache+php4+mysql
Nov 25 PHP
PHP发明人谈MVC和网站设计架构 貌似他不支持php用mvc
Jun 04 PHP
php数组函数序列之array_slice() - 在数组中根据条件取出一段值,并返回
Nov 07 PHP
PHP中使用mktime获取时间戳的一个黑色幽默分析
May 31 PHP
Php header()函数语法及使用代码
Nov 04 PHP
php使用MySQL保存session会话的方法
Jun 18 PHP
Zend Framework教程之Resource Autoloading用法实例
Mar 08 PHP
PHP实现一个多功能购物网站的案例
Sep 13 PHP
PHP调用API接口实现天气查询功能的示例
Sep 21 PHP
PHP封装的XML简单操作类完整实例
Nov 13 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 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录入页面中动态从数据库中提取数据的实现
2006/10/09 PHP
PHP 文件上传源码分析(RFC1867)
2009/10/30 PHP
PHP设计模式之观察者模式定义与用法分析
2019/04/04 PHP
文本框的字数限制功能jquery插件
2009/11/24 Javascript
javascript 获取iframe里页面中元素值的方法
2014/02/17 Javascript
jQuery监控文本框事件并作相应处理的方法
2015/04/16 Javascript
JS实现选择TextArea内文本的方法
2015/08/03 Javascript
JS实现的最简Table选项卡效果
2015/10/14 Javascript
在WordPress中加入Google搜索功能的简单步骤讲解
2016/01/04 Javascript
纯JavaScript代码实现文本比较工具
2016/02/17 Javascript
微信小程序 参数传递详解
2016/10/24 Javascript
在JS中a标签加入单击事件屏蔽href跳转页面
2016/12/16 Javascript
canvas的神奇用法
2017/02/03 Javascript
JS实现页面打印功能
2017/03/16 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
2017/10/26 Javascript
vue页面加载闪烁问题的解决方法
2018/03/28 Javascript
JS与CSS3实现图片响应鼠标移动放大效果示例
2018/05/04 Javascript
JS打印彩色菱形的实例代码
2018/08/15 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
vue模仿网易云音乐的单页面应用
2019/04/24 Javascript
了解javascript中let和var及const关键字的区别
2019/05/24 Javascript
详解Nuxt.js 实战集锦
2019/11/19 Javascript
node.JS路径解析之PATH模块使用方法详解
2020/02/06 Javascript
原生js实现表格循环滚动
2020/11/24 Javascript
Python实现把utf-8格式的文件转换成gbk格式的文件
2015/01/22 Python
Python实现的爬取百度文库功能示例
2019/02/16 Python
如何理解Python中包的引入
2020/05/29 Python
python 基于UDP协议套接字通信的实现
2021/01/22 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
新学期红领巾广播稿
2014/01/14 职场文书
基本公共卫生服务健康教育工作方案
2014/05/22 职场文书
幼儿园校园小喇叭广播稿
2014/10/17 职场文书
优质护理心得体会
2016/01/22 职场文书
医学生自荐信范文(2016精选篇)
2016/01/28 职场文书
javascript数组includes、reduce的基本使用
2021/07/02 Javascript
Golang入门之计时器
2022/05/04 Golang