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自定义函数返回多个值
Nov 26 PHP
如何写php程序?
Dec 08 PHP
php+dojo 的数据库保存拖动布局的一个方法dojo 这里下载
Mar 07 PHP
PHP操作数组的一些函数整理介绍
Jul 17 PHP
支持中文字母数字、自定义字体php验证码代码
Feb 27 PHP
PHP5.3的垃圾回收机制(动态存储分配方案)深入理解
Dec 10 PHP
PHP模板引擎smarty详细介绍
May 26 PHP
PHP设置Cookie的HTTPONLY属性方法
Feb 09 PHP
php封装json通信接口详解及实例
Mar 07 PHP
Thinkphp3.2简单解决多文件上传只上传一张的问题
Sep 26 PHP
laravel 解决强制跳转 https的问题
Oct 22 PHP
Yii使用EasyWechat实现小程序获取用户的openID的方法
Apr 29 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/03 冲泡冲煮
全局记录程序片段的运行时间 正确找到程序逻辑耗时多的断点
2011/01/06 PHP
一个漂亮的php验证码类(分享)
2013/08/06 PHP
php去除头尾空格的2种方法
2015/03/16 PHP
PHP获取类私有属性的3种方法
2020/09/10 PHP
js中用window.open()打开多个窗口的name问题
2014/03/13 Javascript
AngularJS基础知识笔记之过滤器
2015/05/10 Javascript
javascript的正则匹配方法学习
2016/02/24 Javascript
js滚动条平滑移动示例代码
2016/03/29 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
vuejs响应用户事件(如点击事件)
2017/03/14 Javascript
实例详解JSON取值(key是中文或者数字)方式
2017/08/24 Javascript
基于Vue 2.0的模块化前端 UI 组件库小结
2017/12/21 Javascript
微信小程序支付功能 php后台对接完整代码分享
2018/06/12 Javascript
vue+element实现表单校验功能
2019/05/20 Javascript
vue 解决数组赋值无法渲染在页面的问题
2019/10/28 Javascript
Nodejs实现微信分账的示例代码
2021/01/19 NodeJs
Python的dict字典结构操作方法学习笔记
2016/05/07 Python
深入理解python中的闭包和装饰器
2016/06/12 Python
详解Python 序列化Serialize 和 反序列化Deserialize
2017/08/20 Python
CentOS7.3编译安装Python3.6.2的方法
2018/01/22 Python
python 利用pandas将arff文件转csv文件的方法
2019/02/12 Python
通过cmd进入python的实例操作
2019/06/26 Python
python实现查找所有程序的安装信息
2020/02/18 Python
详解Python修复遥感影像条带的两种方式
2020/02/23 Python
在python里创建一个任务(Task)实例
2020/04/25 Python
瑰珀翠美国官网:Crabtree & Evelyn美国
2016/11/29 全球购物
英国最大的割草机购买网站:Just Lawnmowers
2019/11/02 全球购物
自1926年以来就为冰岛保持温暖:66°North
2020/11/27 全球购物
关于廉洁的广播稿
2014/01/30 职场文书
档案工作汇报材料
2014/08/21 职场文书
个人整改方案范文
2014/10/25 职场文书
毕业实习证明(4篇)
2014/10/28 职场文书
2019幼儿教师求职信(3篇)
2019/09/20 职场文书
python基于tkinter制作下班倒计时工具
2021/04/28 Python
Dubbo+zookeeper搭配分布式服务的过程详解
2022/04/03 Java/Android