用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实现聊天的更多相关文章

  1. Ajax实现聊天室

    Ajax实现聊天室 运行效果如下: 代码显示: var net=new Object();//编写构造函数net.AjaxRequest=function(url,onload,onerror,met ...

  2. 基于servlet和ajax的聊天室

    (手贱点了更新发布时间,发布时间变成6-9...) 2017-5-20,在这个奇特的日子,我不再满足于在本地测试javaweb,于是在上腾讯云买了第一个云服务器,由于是学生认证,所以一个月只要10块钱 ...

  3. 使用PHP+ajax打造聊天室应用

    方法1.  comet http://www.xiumu.org/technology/the-php-notes-comet-long-connection-instance.shtml  这篇文章 ...

  4. ajax实现聊天室功能

    需求如下: 先死后活. 需求分析,分析思路如图所示: 1.创建数据库 create database chat; create table messages( id int unsigned prim ...

  5. Ajax技术实战操练课堂学习笔记

    ajax是什么 ? ajax(asynchronouse javascript and xml) 异步的javascript 和 xml 是7种技术的综合,它包含了七个技术( javascript x ...

  6. 采用PHP实现”服务器推”技术的聊天室

      传统的B/S结构的应用程序,都是采用”客户端拉”结束来实现客户端和服务器端的数据交换. 本文将通过结合Ticks(可以参看我的另外一篇文章:关于PHP你可能不知道的-PHP的事件驱动化设计),来实 ...

  7. Ajax与Gson

    1. ajax的底层操作方法: 代码get请求  Get请求 2. Post请求 $("#chufa").click(function () { var val = $(" ...

  8. Java Netty 4.x 用户指南

    问题 今天,我们使用通用的应用程序或者类库来实现互相通讯,比如,我们经常使用一个 HTTP 客户端库来从 web 服务器上获取信息,或者通过 web 服务来执行一个远程的调用. 然而,有时候一个通用的 ...

  9. 关于netty

    现在我们一般使用应用程序或者链接库相互进行通信.例如,我们经常通过一个使用http协议的客户端链接库,从网站服务器中获得信息,并且通过网站服务,调用一些远程程序. 然而,一些通用协议或者它们的实现方式 ...

随机推荐

  1. wpa_supplicant 移植及 linux 命令行模式配置无线上网

    本文涉及内容为linux 命令行模式配置无线上网 及 wpa_supplicant 移植到开发板的过程,仅供参考. 1.源码下载 wpa_supplicant 源码下载地址 :http://hosta ...

  2. C++ 内存泄露处理方法 (转)

    1.可以显示内存泄露情况,但无法找到具体的文件位置写法 包含头文件#include <crtdbg.h> 然后在需要检测内存泄露的位置加上语句 _CrtDumpMemoryLeaks(); ...

  3. Linux下高并发socket链接数测试

    一.如何增大service进程的max open files ulimit -n 只能改小max open files,不能改大.需要按照以下步骤: 修改/etc/security/limits.co ...

  4. PHP 页面编码声明方法(header或meta)

    本文为大家介绍了二种页面编码的声明方法,一种是使用php中的header函数来向客户端发送header头,一种是使用html中的meta标签来生明页面编码,本文分别对他们如何使用进行了说明,感兴趣的同 ...

  5. acdreamoj1108(The kth number)

    题目链接:http://acdream.info/problem? pid=1108 题意:n个数的数列,m次查询某个区间出现次数第k多的数出现的次数.n,m<=100000 解法:这个由于是离 ...

  6. 设计模式 ( 十八 ) 策略模式Strategy(对象行为型)

    设计模式 ( 十八 ) 策略模式Strategy(对象行为型) 1.概述 在软件开发中也经常遇到类似的情况,实现某一个功能有多种算法或者策略,我们能够依据环境或者条件的不同选择不同的算法或者策略来完毕 ...

  7. SQL SERVER中查找某关键词位于哪些存储过程或函数

    USE [MYDB] go SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE routine_type='PROCEDURE' AND routine_d ...

  8. 关于jsb中js与c++的相互调用

    1.js调用c++函数 在c++中声明函数,名为functionCpp,通过spidermonkey中jsapi的JS_DefineFunction绑定一个js函数,名为functionJS,此函数名 ...

  9. oracle数据迁移

    通过这个文章演示一下Oracle的表空间迁移流程以及需要注意的诸多事项. 实验目标:将ora10g数据库实例上的表空间TBS_SEC_D迁移到secooler数据库实例上操作系统:Redhat 5.3 ...

  10. 如何快速掌握CSS(各种CSS工具)

    CSS中的大量属性难以记忆,通过组合多种CSS工具,可以快速学习常见样式,并提高设计效率.这里给大家推荐一些比较好的在线工具,通过所见即所得图形化界面设计样式,直接得到对应的CSS代码.相比臃肿的集成 ...