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新手上路(十一)
Oct 09 PHP
PHP新手上路(六)
Oct 09 PHP
php实现cc攻击防御和防止快速刷新页面示例
Feb 13 PHP
php除数取整示例
Apr 24 PHP
thinkphp实现like模糊查询实例
Oct 29 PHP
php利用事务处理转账问题
Apr 22 PHP
php版微信公众账号第三方管理工具开发简明教程
Sep 23 PHP
PHP二维数组实现去除重复项的方法【保留各个键值】
Dec 21 PHP
php对象工厂类完整示例
Aug 09 PHP
laravel 框架配置404等异常页面
Jan 07 PHP
PHP开启目录引索+fancyindex漂亮目录浏览带搜索功能
Sep 23 PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 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中文分词的简单实现代码分享
2011/07/17 PHP
php判断上传的Excel文件中是否有图片及PHPExcel库认识
2013/01/11 PHP
PHP的foreach中使用引用时需要注意的一个问题和解决方法
2014/05/29 PHP
PHP控制前台弹出对话框的实现方法
2016/08/21 PHP
通过隐藏option实现select的联动效果
2009/11/10 Javascript
jQuery 改变CSS样式基础代码
2010/02/11 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
checkbox使用示例
2013/08/23 Javascript
javascript使用数组的push方法完成快速排序
2014/09/15 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
jquery实现键盘左右翻页特效
2015/04/30 Javascript
JS插件overlib用法实例详解
2015/12/26 Javascript
详解nodejs中exports和module.exports的区别
2017/02/17 NodeJs
bootstrap的常用组件和栅格式布局详解
2017/05/02 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
node.js 利用流实现读写同步,边读边写的方法
2017/09/11 Javascript
使用angular-cli webpack创建多个包的方法
2018/10/16 Javascript
Nuxt.js实战和配置详解
2019/08/05 Javascript
vue动画—通过钩子函数实现半场动画操作
2020/08/09 Javascript
JS实现悬浮球只在一侧滑动并且是横屏状态下
2020/08/19 Javascript
基于Vant UI框架实现时间段选择器
2020/12/24 Javascript
详解python 发送邮件实例代码
2016/12/22 Python
Python Flask框架扩展操作示例
2019/05/03 Python
Flask模板引擎之Jinja2语法介绍
2019/06/26 Python
Python Web框架之Django框架Form组件用法详解
2019/08/16 Python
Python Celery多队列配置代码实例
2019/11/22 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
利用Node实现HTML5离线存储的方法
2020/10/16 HTML / CSS
意大利香水和彩妆护肤品购物网站:Ditano
2017/08/13 全球购物
名人珠宝设计师:Melinda Maria Jewelry
2019/03/06 全球购物
英国最大的汽车配件在线商店:Euro Car Parts
2019/09/30 全球购物
档案接收函
2014/01/13 职场文书
企业员工爱岗敬业演讲稿
2014/08/26 职场文书
党员个人自我评价
2015/03/03 职场文书
教师岗位职责范本
2015/04/02 职场文书
聘任书范文大全
2015/09/21 职场文书