通过ajax和setInterval()函数,配合php+mysql实现一个简单的在线聊天室的功能。附带详细源码案例。这个聊天室是一个简单的聊天室,通过javascript setInterval()和ajax函数,不停的去获取服务器获取最新的聊天数据信息,并无刷新的写入到前台DOM中,来实现在线聊天的功能,这是一个比较笨的方法实现在线聊天室功能,不建议用于实际项目中。html代码:

实现一个简单的在线聊天室功能

在线聊天

.chats { width:100%;max-height:295px;min-height:200px; height:auto; overflow-y:auto; }

.chatbtn { width:100%; padding:10px 10px; border-top:1px dashed #000;}

.chats .chatlist { width:100%; padding:10px 10px; min-height:24px; line-height:1.2; font-size:13px; text-align:left; }

.chats .chatlist .chattit {  font-size:14px; }

.chats .chatlist .chattit span { margin-right:2px; }

.chats .chatlist .chatcon { font-size:13px; padding-left:10px; margin-top:6px;text-decoration: underline;}

发送

//js聊天代码

$(function(){

//获取聊天数据

setInterval(function(){

var star = $('#datachat').attr('data_num');

//判断是不是第一次加载,如果是第一次加载直接获取数据库最新的数据

//如果不是第一次加载,就不停的去获取服务器的最新聊天数据

if(star=='load'){

$.ajax({

url:'inc/chat.php?type=get_def',

type:'post',

cache:false,

dataType:'json',

success:function(data){

if(data !='error!'){

var clength = data.length-1;

for(var i=clength;i>=0;i--){

$(".chats").append("

"+data[i].name+""+data[i].addtime+"["+data[i].address+"]:
"+data[i].content+"

");

$('#datachat').attr('data_num',data[i].id);

$(".chats").animate({scrollTop:$('.chats')[0].scrollHeight},2000);

}

}

}

});

}else{

$.ajax({

url:'inc/chat.php?type=get_new',

type:'post',

cache:false,

dataType:'json',

data:{

'num':star

},

success:function(data){

if(data !='error!'){

var clength = data.length-1;

for(var i=clength;i>=0;i--){

$(".chats").append("

"+data[i].name+""+data[i].addtime+"["+data[i].address+"]:
"+data[i].content+"

");

$('#datachat').attr('data_num',data[i].id);

$(".chats").animate({scrollTop:$('.chats')[0].scrollHeight},700);

}

}

}

});

}

},1500);

//发送聊天数据

$('#chat_send').click(function(){

var chat_name = $('#name').val();

var chat_con = $('#con').val();

if(chat_name==''){

$('#name').val('昵称不可以为空!');

return false;

}else if(chat_name=='昵称不可以为空!'){

$('#name').val(' ');

return false;

}else if(chat_name.length<1){

$('#name').val('昵称太短!');

return false;

}else if(chat_name=='昵称太短!'){

$('#name').val(' ');

return false;

}

if(chat_con==''){

$('#con').val('内容不可以为空!');

return false;

}else if(chat_con=='内容不可以为空!'){

$('#con').val(' ');

return false;

}else if(chat_con.length<1){

$('#con').val('内容太短!');

return false;

}else if(chat_con=='内容太短!'){

$('#con').val(' ');

return false;

}

$.ajax({

url:'inc/chat.php?type=send',

type:'post',

cache:false,

dataType:'text',

data:{

'name':chat_name,

'con':chat_con

},

success:function(data){

if(data=='发送成功!'){

$('#chat_send').text('发送成功');

}else{

$('#chat_send').text('发送失败');

}

setTimeout(function(){

$('#chat_send').text('发送');

},1000);

},

error:function(){

alert('请求出错!');

}

});

});

});

php数据处理代码 chat.php:<?php

header("Conten-type:text/html;charset=utf-8");

require('../config.php');

require('getip.php');

if( $_SERVER['REQUEST_METHOD'] == "POST" ) {

if ($_GET['type'] == 'send') {

//添加聊天数据

$name = htmlspecialchars(addslashes(trim($_POST['name'])));

$con = htmlspecialchars(addslashes(trim($_POST['con'])));

if (empty($name) || empty($con)) {

echo "信息填写不完整。";

exit;

} else {

$ip = GetIpFrom();

$ips = $ip[0] .'-'. $ip[1];

if($dbh->exec("insert into chat (name,content,addtime,address) values('$name','$con',now(),'$ips')")>0){

echo '发送成功!';

exit;

}else{

echo '发送失败!';

exit;

}

}

}else if ($_GET['type'] == 'get_def'){

//获取数据

$res = $dbh->query("SELECT * FROM chat ORDER BY id DESC LIMIT 10");

$res = $res->fetchAll();

if($res){

echo json_encode($res);

exit;

}else{

echo 'error!';

exit;

}

}else if($_GET['type'] == 'get_new'){

$num = intval($_POST['num']);

$sql1 ="SELECT * FROM chat WHERE id>{$num} ORDER BY id DESC";

$res1 = $dbh -> query($sql1);

$res2 = $res1->fetchAll();

if($res2){

echo json_encode($res2);

exit;

}else{

echo 'error!';

exit;

}

}

}

?>mysql数据库结构:CREATE TABLE IF NOT EXISTS `chat` (

`id` int(8) NOT NULL AUTO_INCREMENT COMMENT 'id',

`name` char(10) NOT NULL COMMENT '昵称',

`content` varchar(255) NOT NULL COMMENT '内容',

`addtime` datetime NOT NULL COMMENT '发布时间',

`address` varchar(80) DEFAULT '未知' COMMENT 'ip地址',

PRIMARY KEY (`id`)

) ENGINE=InnoDB  DEFAULT CHARSET=utf8 COMMENT='在线聊天' AUTO_INCREMENT=3 ;

ajax+php简单聊天室源码下载:

php 开发一个聊天系统,ajax+php 实现一个简单的在线聊天室功能(附带源码)相关推荐

  1. 详细介绍附代码:使用jquery,和php文件构建一个简单的在线聊天室,通过ip显示googlemap

    最近学习了关于使用最为流行的jquery发送请求,在实践中以最为简单的聊天室作为测验的辅助工具,对相关网页开发有一个初步的认识,希望大家能够一起学习进步.        首先介绍一下相关文件信息和功能 ...

  2. 基于Android开发的在线考试系统(附带源码)

    管理员:管理员使用本系统涉到的功能主要有:首页.个人中心.学生管理.教师管理.考试公告管理.管理员管理.试题管理.试卷管理.系统管理.考试管理等功能. 教师:教师进入app可以对:首页.个人中心.学生 ...

  3. 基于PHP实现一个简单的在线聊天功能(轮询ajax )

    基于PHP实现一个简单的在线聊天功能(轮询ajax ) 一.总结 1.用的轮询ajax 二.基于PHP实现一个简单的在线聊天功能 一直很想试着做一做这个有意思的功能,感觉复杂的不是数据交互和表结构,麻 ...

  4. 实战|使用 Python 开发一个在线聊天室

    「来源: |Python爬虫与数据挖掘 ID:crawler_python」 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 云想衣裳花想容,春风拂槛露 ...

  5. 实战 | 使用 Python 开发一个在线聊天室

    点击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 云想衣裳花想容,春风拂槛露华浓. ...

  6. 实现一个简单的语音聊天室(多人语音聊天系统)

    多人语音聊天,或语音聊天室,是即时通信应用中常见的功能之一,比如,QQ的语音讨论组就是我们用得比较多的. 本文将基于最新版本的OMCS(V3.5)实现一个简单的语音聊天室,让多个人可以进入同一个房间进 ...

  7. 实现一个简单的视频聊天室(源码)

    在 <实现一个简单的语音聊天室>一文发布后,很多朋友建议我也实现一个视频聊天室给他们参考一下,其实,视频聊天室与语音聊天室的原理是差不多的,由于加入了摄像头.视频的处理,逻辑会繁杂一些,本 ...

  8. 实现一个简单的语音聊天室(源码)

    语音聊天室,或多人语音聊天,是即时通信应用中常见的功能之一,比如,QQ的语音讨论组就是我们用得比较多的. 这篇文章将实现一个简单的语音聊天室,让多个人可以进入同一个房间进行语音沟通.先看运行效果截图: ...

  9. 简单的一个在线聊天室

    闲着无聊写一个基于数据库写一个在线聊天室 前几天闲着没事突然想起写个小程序玩玩,就想到了写个在闲聊天室,话不多说直接开始. 1.第一当然是先写一个聊天界面啦,我写的界面是这样: 聊天页面 2.写这个程 ...

最新文章

  1. 在SolidWorks 3D CAD中构建乐高直升机
  2. 更新ubuntu软件源
  3. 超图iServer重置管理员密码图解
  4. (二) :JS 生成随机数字母和数字
  5. 牛客题霸 [矩阵查找] C++题解/答案
  6. 【GoWeb开发实战】Beego的路由控制
  7. php删除文件代码指定,PHP删除指定文件夹所有文件代码
  8. 蚂蚁之江要退地?官方回应:假的
  9. 调整oracle数据库编码
  10. HDU2074 叠筐【打印图案】
  11. python的字典合并有相同的_将列表中的重复项合并到python字典中
  12. 微信小程序常用api
  13. Louvain 算法的核心思路以及数据结构(最完善版)
  14. Git下载并安装(完整、详细教程)
  15. 智能推荐系统开发中的十个关键注意点
  16. 【小程序】常见系统API | 页面分享 | 位置信息 | 本地存储
  17. 冬季到吉林来玩雪|史上最全的吉林冬季旅游攻略!
  18. Node.js结合Express框架项目搭建
  19. springboot搭建项目环境以及整合其他技术
  20. PCB:FPC原材料,设计,加工,组装终极解决方案

热门文章

  1. swft c 语言 数组,如何在swift中实现数组的深拷贝
  2. python 元组比较大小_为什么元组比列表更快?
  3. 代码质量管理工具】——sonar
  4. struts2访问jsp页面404
  5. php什么情况下使用静态属性,oop-做php项目什么时候该使用静态属性呢
  6. html window 属性,html中window对象top 、self 、parent 等属性
  7. 安装gem_Python安装第三方库及常见问题处理方法汇总
  8. c#如何嵌套第三方程序_C#程序演示嵌套条件运算符的示例
  9. Redis为什么变慢了?一文详解Redis性能问题 | 万字长文
  10. 关于C#监视剪贴板信息