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协议的客户端链接库,从网站服务器中获得信息,并且通过网站服务,调用一些远程程序. 然而,一些通用协议或者它们的实现方式 ...
随机推荐
- CorelDraw x6【Cdr x6】官方简体中文破解版(64位)安装图文教程、破解注册方法
国内私募机构九鼎控股打造APP,来就送 20元现金领取地址:http://jdb.jiudingcapital.com/phone.html内部邀请码:C8E245J (不写邀请码,没有现金送)国内私 ...
- Android Studio开发JNIproject
使用Android Sutdio创建一个新的project后,接下来记录创建NDKproject的基本步骤. 本文将达到: 1. 创建NDKproject 2. 在JNI中输出Log语句 3. 指定编 ...
- UITableViewCell重用机制
UITableView是iOS开发中使用频率非常高的一个控件,它常被用来展示信息列表,尽管信息数据可能非常多,但UITableView消耗的资源却并不会随着展示信息的增多而变大,这都要得益于UITab ...
- 生成html的几种方案
方案1: /// <summary > /// 传入URL返回网页的html代码 /// </summary > /// <param name=&q ...
- IOS实用功能之截图(来自相册和拍照)
// // ViewController.m // MyImagePicker1.0 // // Created by Mac on 14-7-14. // Copyright (c) 201 ...
- 0c-39-ARC下单对象内存管理
1.ARC工作原理详述 ARC是Objective-C编译器的特性,而不是运行时特性或者垃圾回收机制,ARC所做的只不过是在代码编译时为你自动在合适的位置插入release或autorelease A ...
- 锁大全与 GDB调试
1.innodb_lock_monitor:打开锁信息的方式 mysql> create table innodb_lock_monitor(id int) engine=InnoDB; Que ...
- 数据剪切命令cut和数据粘贴命令pastte
在Windows中,经常从一个文件将一段文本移动到另一个文件中.在Linux中执行这个任务的是cut和paste命令. 一.数据剪切命令cut 命令格式: cut [option] [file] 常用 ...
- nopCommerce 数据缓存
为了提高一个系统或网站的性能和IO吞吐量,我们一般都会采用缓存技术.当然NopCommerce也不例外,本文我们就来给大家分析一下nop中Cache缓存相关类设计.核心源码及实现原理. 一.Nop.C ...
- Ubuntu下安装FTP服务及使用(VSFTPD详细设置)(二)
vsftpd 作为一个主打安全的FTP服务器,有很多的选项设置.下面介绍了vsftpd的配置文件列表,而所有的配置都是基于vsftpd.conf这个配置文件 的.本文将提供完整的vsftpd.conf ...