Ajax实现聊天
用Ajax发送请求,查询数据库是否有自己的数据,如果有自己的数据,就返回
前端页面
<head>
<meta charset="UTF-8">
<title>登录聊天室</title>
<?php
session_start();
$sender = $_SESSION['loginuser'];
$username = $_GET['username'];
?>
<meta name="name" content="content" charset="utf-8">
<script type="text/javascript">
function ismsg(){//是否有信息
var xhr=myAjax();
xhr.open('post','ismsg.php',true);
xhr.setRequestHeader('content-type','application/x-www-form-urlencoded');
xhr.onreadystatechange=function (){
if(this.readyState==4){
$('mymess').innerHTML+=this.responseText;
}
}
var name=$('user').innerHTML;
//alert(name);
xhr.send('username='+name);
}
function sendMessage(){
ismsg();
var myXmlHttpRequest = myAjax();
//alert(myXmlHttpRequest);
if(myXmlHttpRequest){
var url = "sendMessage.php";
var data = "con="+$('con').value+"&getter=<?php echo $username;?>&sender=<?php echo $sender;?>";
//alert($('con').value);
myXmlHttpRequest.open('post',url,true);
myXmlHttpRequest.onreadystatechange = function(){
if(myXmlHttpRequest.readyState == 4){
//alert('das');
//document.getElementById('re').innerHTML=myXmlHttpRequest.responseText;
if(myXmlHttpRequest.status == 200){
//alert(200);
//alert(myXmlHttpRequest.responseText);
if(myXmlHttpRequest.responseText ==1){
var con = $('con').value;
$('mymess').innerHTML += "<br/>"+"<?php echo $sender;?> "+show()+"<br/>"+con+"\n"+"<br/>";
$('con').value = '';
//ismsg();
}
}
}
}
myXmlHttpRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
myXmlHttpRequest.send(data);
}
}
//获取响应ID信息的公用函数
function $(id){
return document.getElementById(id);
}
//考虑浏览器兼容创造ajax对象
function myAjax(){
var myAjax = false;
if(window.XMLHttpRequest){
myAjax = new XMLHttpRequest();
}else{
myAjax = new window.Activexobject('Microsoft.XMLHttp');
}
return myAjax;
}
function show(){
var date = new Date();
var now = "";
now = date.getFullYear()+"-";
now = now + (date.getMonth()+1)+"-";
now = now + date.getDate()+" ";
now = now + date.getHours()+":";
now = now + date.getMinutes()+":";
now = now + date.getSeconds()+"";
return now;
}
</script>
</head>
<body>
<h1>聊天室(<span id='user'><?php echo $sender;?></span>正在与<?php echo $username;?>)聊天</h1>
<div id="re"></div>
<div style="width:500px; height:400px; overflow:auto; border:1px solid green; background=grey;" id="mymess"></div><br />
<input type="text" id="con" style="width:375px;">
<input type="button" value="发送" onclick="sendMessage();">
<input type="button" value="看看有没有信息" onclick="ismsg();"/>
</body>
</html>
ismsg.php
<?php
header("Content-type:text/html;charset=utf-8");
//获取所有未读的信息
require('./mysql.php');
$mysql=mysql::getIns();
$sql="select * from messages where isget=0 and geter='".$_POST['username']."'";
$rs=$mysql->getAll($sql);
$str='';
//echo 'haha';
if($rs){
foreach($rs as $v){
echo $v['sender'].' '.date('Y-m-d H:i:s').'<br/>'.$v['content'].'<br/>';
}
//echo $str; }
$sql="update messages set isget=1 where isget=0 and geter='".$_POST['username']."'";
$mysql->query($sql);
?>
sendMessage.php
<?php
header("Content-type:text/html;charset=utf-8");
$sender = $_POST['sender'];
$getter = $_POST['getter'];
$con = $_POST['con'];
//echo $con;
//echo $sender,$getter,$con;
echo add_message($sender,$getter,$con);
//file_put_contents('send.txt',$sender."-".$getter."-".$con."\t\n",FILE_APPEND);
function sql_con(){
$link = mysql_connect('localhost','root','111111');
if(!$link){
echo "连接失败".mysql_error();die;
}
//mysql_select_db('chatroom',$link);
//mysql_query('set names utf8');
return $link;
}
function add_message($sender,$getter,$con){
$conn=sql_con();
mysql_query('use chatroom',$conn);
mysql_query('set names utf8',$conn);
$sql = "insert into messages(sender,geter,content,sendtime) values('$sender','$getter','$con',now())";
//echo $sql;
$res = mysql_query($sql,$conn);
//print_r($res);
return $res;
}
?>
Ajax实现聊天的更多相关文章
- Ajax实现聊天室
Ajax实现聊天室 运行效果如下: 代码显示: var net=new Object();//编写构造函数net.AjaxRequest=function(url,onload,onerror,met ...
- 基于servlet和ajax的聊天室
(手贱点了更新发布时间,发布时间变成6-9...) 2017-5-20,在这个奇特的日子,我不再满足于在本地测试javaweb,于是在上腾讯云买了第一个云服务器,由于是学生认证,所以一个月只要10块钱 ...
- 使用PHP+ajax打造聊天室应用
方法1. comet http://www.xiumu.org/technology/the-php-notes-comet-long-connection-instance.shtml 这篇文章 ...
- ajax实现聊天室功能
需求如下: 先死后活. 需求分析,分析思路如图所示: 1.创建数据库 create database chat; create table messages( id int unsigned prim ...
- Ajax技术实战操练课堂学习笔记
ajax是什么 ? ajax(asynchronouse javascript and xml) 异步的javascript 和 xml 是7种技术的综合,它包含了七个技术( javascript x ...
- 采用PHP实现”服务器推”技术的聊天室
传统的B/S结构的应用程序,都是采用”客户端拉”结束来实现客户端和服务器端的数据交换. 本文将通过结合Ticks(可以参看我的另外一篇文章:关于PHP你可能不知道的-PHP的事件驱动化设计),来实 ...
- Ajax与Gson
1. ajax的底层操作方法: 代码get请求 Get请求 2. Post请求 $("#chufa").click(function () { var val = $(" ...
- Java Netty 4.x 用户指南
问题 今天,我们使用通用的应用程序或者类库来实现互相通讯,比如,我们经常使用一个 HTTP 客户端库来从 web 服务器上获取信息,或者通过 web 服务来执行一个远程的调用. 然而,有时候一个通用的 ...
- 关于netty
现在我们一般使用应用程序或者链接库相互进行通信.例如,我们经常通过一个使用http协议的客户端链接库,从网站服务器中获得信息,并且通过网站服务,调用一些远程程序. 然而,一些通用协议或者它们的实现方式 ...
随机推荐
- MFC中显示 .bmp格式的位图
最近在看VisualC++ 图像处理的书籍,表示一直在从基础做起,今天就记录一个简单功能的实现,显示.bmp格式的位图. 首先需要理解的是窗口创建的过程包括两个步骤:首先擦除窗口的背景,然后在对窗口进 ...
- 全代码实现ios-3
决定做ios开发的时候,看了很多本关于ios开发的书籍,其中有国内的人写的,也有根据外国的书翻译过来的. 很可惜,这些书里的例子没办法照搬过来,因为Xcode更新换代太快了,而这些书本的内容更新的速度 ...
- javascrpt随笔
function member(name, gender) { this.name = name; this.gender = gender; this.display = display; //指定 ...
- uva208 - Firetruck
Firetruck The Center City fire department collaborates with the transportation department to maintai ...
- echarts通过ajax向服务器发送post请求,servlet从数据库读取数据并返回前端
1.echarts的官网上的demo,都是直接写死的随机数据,没有和数据库的交互,所以就自己写了一下,ok,我们开始一步一步走一遍整个流程吧. 就以官网最简单的那个小demo来做修改吧.官网上的小de ...
- C++ Code_TabControl
主题 1. 选项卡控件基础 2. 显示图标的选项卡 3. 选项卡控件高级 4. 5. 属性 选项卡控件基础 1.插入1个对话框,新建1个类 CCDialog1,1 个对话框对应一个 ...
- Java并发学习之十九——线程同步工具之Phaser
本文是学习网络上的文章时的总结.感谢大家无私的分享. JDK 1.7 加入了一个新的工具Phaser.Phaser的在功能上与CountDownLatch有部分重合. 以下使用Phaser类来同步3个 ...
- 如何利用PhoneGap制作地图APP
摘要:百度地图API是一套由javascript编写的地图程序接口,按说它应该运行在浏览器上.现在,只要利用PhoneGap,我们就能开发出移动平台上能使用的APP了! --------------- ...
- Java Web模块——验证码模块
一.什么是验证码及它的作用 验 证码为全自动区分计算机和人类的图灵测试的缩写,是一种区分用户是计算机的公共全自动程序,这个问题可以由计算机生成并评判,但是必须只有人类才能解答. 可以防止恶意破解密码. ...
- 好记心不如烂笔头之JQuery学习,第四章
---恢复内容开始--- JQuery中的事件和动画 JQuery中的事件: $(document).ready()该事件和JS中的window.load类似,但是window.load中需要等待所有 ...