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和XSL stylesheets转换XML文档
Oct 09 PHP
亲密接触PHP之PHP语法学习笔记1
Dec 17 PHP
用PHP实现的生成静态HTML速度快类库
Mar 31 PHP
PHP 5.0对象模型深度探索之属性和方法
Mar 27 PHP
PHP得到mssql的存储过程的输出参数功能实现
Nov 23 PHP
php命令行使用方法和命令行参数说明
Apr 08 PHP
php数组中删除元素之重新索引的方法
Sep 16 PHP
php获取、检查类名、函数名、方法名的函数方法
Jun 25 PHP
实例简介PHP的一些高级面向对象编程的特性
Nov 27 PHP
PHP入门教程之面向对象的特性分析(继承,多态,接口,抽象类,抽象方法等)
Sep 11 PHP
php+mysql开发的最简单在线题库(在线做题系统)完整案例
Mar 30 PHP
PHP sdk文档处理常用代码示例解析
Dec 09 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
Smarty结合Ajax实现无刷新留言本实例
2007/01/02 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
2013/06/18 PHP
理解Javascript_08_函数对象
2010/10/15 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
《JavaScript高级程序设计》阅读笔记(二) ECMAScript中的原始类型
2012/02/27 Javascript
JavaScript 更严格的相等 [译]
2012/09/20 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
js编写trim()函数及正则表达式的运用
2013/10/24 Javascript
jquery实现树形二级菜单实例代码
2013/11/20 Javascript
js中创建对象的几种方式示例介绍
2014/01/26 Javascript
javascript数组去重方法终极总结
2014/06/05 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
js实现select二级联动下拉菜单
2020/04/17 Javascript
JS组件Bootstrap ContextMenu右键菜单使用方法
2016/04/17 Javascript
js控住DOM实现发布微博效果
2016/08/30 Javascript
JS DOMReady事件的六种实现方法总结
2016/11/23 Javascript
JavaScript trim 实现去除字符串首尾指定字符的简单方法
2016/12/27 Javascript
微信小程序实现表单校验功能
2020/03/30 Javascript
JS实现马赛克图片效果完整示例
2019/04/13 Javascript
解决layui弹框失效的问题
2019/09/09 Javascript
react 原生实现头像滚动播放的示例
2020/04/21 Javascript
Python的Twisted框架中使用Deferred对象来管理回调函数
2016/05/25 Python
Pytorch 数据加载与数据预处理方式
2019/12/31 Python
pandas使用之宽表变窄表的实现
2020/04/12 Python
python计算auc的方法
2020/09/09 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
CSS3色彩模式有哪些?CSS3 HSL色彩模式的定义
2016/04/26 HTML / CSS
HTML5 Canvas实现烟花绽放特效
2016/03/02 HTML / CSS
Agoda香港:全球特价酒店预订
2017/05/07 全球购物
Richards网上商店:当代时尚,遍布巴西
2019/11/03 全球购物
岗位职责的定义
2013/11/10 职场文书
财务管理职业生涯规划范文
2013/12/27 职场文书
大学学习生活感言
2014/01/18 职场文书
消防应急演练方案
2014/02/12 职场文书
外联部演讲稿
2014/05/24 职场文书
同意离婚答辩状
2015/05/22 职场文书