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 strcmp使用说明
Apr 22 PHP
php 随机排序广告的实现代码
May 09 PHP
通过缓存数据库结果提高PHP性能的原理介绍
Sep 05 PHP
PHP面向对象——访问修饰符介绍
Nov 08 PHP
php递归函数中使用return的注意事项
Jan 17 PHP
php获取域名的google收录示例
Mar 24 PHP
windows下配置apache+php+mysql时出现问题的处理方法
Jun 20 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
PHP实现发送邮件的方法(基于简单邮件发送类)
Dec 17 PHP
简单谈谈php延迟静态绑定
Jan 26 PHP
ECshop 迁移到 PHP7版本时遇到的兼容性问题
Feb 15 PHP
PHP+Redis事务解决高并发下商品超卖问题(推荐)
Aug 03 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
东方红 - 来复式再生机的修复
2021/03/02 无线电
PHP4实际应用经验篇(1)
2006/10/09 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
PHP实现的日历功能示例
2018/09/01 PHP
IE8 中使用加速器(Activities)
2010/05/14 Javascript
JavaScript ( (__ = !$ + $)[+$] + ({} + $)[_/_] +({} + $)[_/_] )
2011/02/25 Javascript
js 编程笔记 无名函数
2011/06/28 Javascript
JS 如何获取radio选中后的值及不选择取radio的值
2013/10/28 Javascript
jquery实现增加删除行的方法
2015/02/03 Javascript
浅析node连接数据库(express+mysql)
2015/11/30 Javascript
微信小程序(应用号)开发新闻客户端实例
2016/10/24 Javascript
原生js实现可爱糖果数字时间特效
2016/12/30 Javascript
完美解决linux下node.js全局模块找不到的情况
2018/05/16 Javascript
详解webpack-dev-server使用方法
2018/09/14 Javascript
vue组件tabbar使用方法详解
2018/11/06 Javascript
了解Javascript中函数作为对象的魅力
2019/06/19 Javascript
如何基于原生javaScript生成带图片的二维码
2019/11/21 Javascript
JS常用正则表达式超全集(密码强度校验,金额校验,IE版本,IPv4,IPv6校验)
2020/02/03 Javascript
[01:06:25]Secret vs Liquid 2018国际邀请赛淘汰赛BO3 第一场 8.25
2018/08/29 DOTA
[01:00:14]DOTA2-DPC中国联赛 正赛 Ehome vs Elephant BO3 第二场 2月28日
2021/03/11 DOTA
Python使用asyncio包处理并发详解
2017/09/09 Python
Python机器学习算法之k均值聚类(k-means)
2018/02/23 Python
浅析python标准库中的glob
2020/03/13 Python
在python image 中实现安装中文字体
2020/05/16 Python
Django框架请求生命周期实现原理
2020/11/13 Python
matplotlib bar()实现百分比堆积柱状图
2021/02/24 Python
html5的自定义data-*属性与jquery的data()方法的使用
2014/07/02 HTML / CSS
美国家用电器和电子产品商店:Abt
2016/09/06 全球购物
优衣库英国官网:UNIQLO英国
2016/12/25 全球购物
英语专业应届生求职信范文
2013/11/15 职场文书
协议书范本
2014/04/23 职场文书
企业总经理助理岗位职责
2014/09/12 职场文书
房屋产权证明书
2014/10/15 职场文书
初中教师个人总结
2015/02/10 职场文书
圣贤教育改变命运观后感
2015/06/16 职场文书
nginx里的rewrite跳转的实现
2021/03/31 Servers