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 socke 向指定页面提交数据
Jul 23 PHP
解析php curl_setopt 函数的相关应用及介绍
Jun 17 PHP
使用PHP实现Mysql读写分离
Jun 28 PHP
php中的strpos使用示例
Feb 27 PHP
PHP生成树的方法
Jul 28 PHP
教大家制作简单的php日历
Nov 17 PHP
PHP实现中国公民身份证号码有效性验证示例代码
May 03 PHP
基于ThinkPHP5.0实现图片上传插件
Sep 25 PHP
php 删除一维数组中某一个值元素的操作方法
Feb 01 PHP
PDO::getAttribute讲解
Jan 28 PHP
thinkphp5.1 框架钩子和行为用法实例分析
May 25 PHP
windows系统php环境安装swoole具体步骤
Mar 04 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
给海燕B411配件机起死回生配上件
2021/03/02 无线电
PHP实现一个轻量级容器的方法
2019/01/28 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
JS 去除Array中的null值示例代码
2013/11/20 Javascript
通过JS来判断页面控件是否获取焦点
2014/01/03 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
js+html5实现canvas绘制椭圆形图案的方法
2016/05/21 Javascript
jquery之别踩白块游戏的简单实现
2016/07/25 Javascript
JQuery和HTML5 Canvas实现弹幕效果
2017/01/04 Javascript
easyui datebox 时间限制,datebox开始时间限制结束时间,datebox截止日期比起始日期大的实现代码
2017/01/12 Javascript
JS复制对应id的内容到粘贴板(Ctrl+C效果)
2017/01/23 Javascript
vuex进阶知识点巩固
2018/05/20 Javascript
Js 利用正则表达式和replace函数获取string中所有被匹配到的文本(推荐)
2018/10/28 Javascript
layer ui插件显示tips时,修改字体颜色的实现方法
2019/09/11 Javascript
解决LayUI加上form.render()下拉框和单选以及复选框不出来的问题
2019/09/27 Javascript
JavaScript 类的封装操作示例详解
2020/05/16 Javascript
javascript实现获取中文汉字拼音首字母
2020/05/19 Javascript
three.js 制作动态二维码的示例代码
2020/07/31 Javascript
Vue + ts实现轮播插件的示例
2020/11/10 Javascript
Python内置函数的用法实例教程
2014/09/08 Python
在Python中使用正则表达式的方法
2015/08/13 Python
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python实现读取json文件到excel表
2017/11/18 Python
python:print格式化输出到文件的实例
2018/05/14 Python
浅析Python装饰器以及装饰器模式
2018/05/28 Python
python 爬取马蜂窝景点翻页文字评论的实现
2020/01/20 Python
Python中if有多个条件处理方法
2020/02/26 Python
python中urllib.request和requests的使用及区别详解
2020/05/05 Python
Python类class参数self原理解析
2020/11/19 Python
Perfume’s Club澳大利亚官网:西班牙领先的在线美容店
2021/02/01 全球购物
叙述DBMS对数据控制功能有哪些
2016/06/12 面试题
电信专业毕业生推荐信
2013/11/18 职场文书
技术总监管理职责范本
2014/03/06 职场文书
如何写好自荐信
2014/04/07 职场文书
护士节策划方案
2014/05/19 职场文书
教师学习群众路线心得体会
2014/11/04 职场文书