实现一个无刷新的基于ajax的简易聊天室
实现一个基于ajax的简易聊天室
1 程序主页面
<html>
<head>
<title>在线交流对话</title>
<META http-equiv=Content-Language content=zh-cn>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<?php
include_once("server1.server.php"); #servidor para XAJAX
$xajax->printJavascript();
?>
<head>
<title>在线交流对话</title>
<META http-equiv=Content-Language content=zh-cn>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<?php
include_once("server1.server.php"); #servidor para XAJAX
$xajax->printJavascript();
?>
</head>
<body>
<div id=display>
</div>
<body>
<div id=display>
</div>
<script language=javascript>
function reloaddisplay()
{
xajax_reloaddisplay();
}
setInterval(reloaddisplay,5000); //五秒钟自动读取最新的留言15条
</script>
function reloaddisplay()
{
xajax_reloaddisplay();
}
setInterval(reloaddisplay,5000); //五秒钟自动读取最新的留言15条
</script>
<script language=javascript>
function onSubmit() {
xajax_speak(xajax.getFormValues("speakForm"));
}
</script>
function onSubmit() {
xajax_speak(xajax.getFormValues("speakForm"));
}
</script>
<div id=speak>
<form id="speakForm" action="javascript:void(null);" onsubmit="onSubmit();">
<fieldset>
<legend>Please into your words here!</legend>
<label>Speak:</label>
<input type="text" name="words" id="words" size="40" maxlength="150" />
<input type="submit" value="enter"> //点击按钮时提交
<input type="hidden" name="nick" id="nick" value="guest" />
</fieldset>
</form>
</div>
<form id="speakForm" action="javascript:void(null);" onsubmit="onSubmit();">
<fieldset>
<legend>Please into your words here!</legend>
<label>Speak:</label>
<input type="text" name="words" id="words" size="40" maxlength="150" />
<input type="submit" value="enter"> //点击按钮时提交
<input type="hidden" name="nick" id="nick" value="guest" />
</fieldset>
</form>
</div>
</body>
</html>
</html>
2 脚本
– 聊天室
CREATE TABLE TBL_CHAT (
nick varchar(10) NOT NULL default ”,
words varchar(150) NOT NULL default ”,
chattime bigint(20) unsigned NOT NULL default ‘0′
) TYPE=MyISAM;
CREATE TABLE TBL_CHAT (
nick varchar(10) NOT NULL default ”,
words varchar(150) NOT NULL default ”,
chattime bigint(20) unsigned NOT NULL default ‘0′
) TYPE=MyISAM;
3 服务器端
<?php
include ‘include.php’;
require("xajax.inc.php");
include ‘include.php’;
require("xajax.inc.php");
//extend response
class myXajaxResponse extends xajaxResponse
{
function addAddOption($sSelectId, $sOptionText, $sOptionValue)
{
$sScript = "var objOption = new Option(‘".$sOptionText."’,'".$sOptionValue."’);";
$sScript .= "document.getElementById(‘".$sSelectId."’).options.add(objOption);";
$this->addScript($sScript);
}
function addClearSelect($sSelectId)
{
$sScript .= "document.getElementById(‘".$sSelectId."’).options.length = 0;";
$sScript .= "document.getElementById(‘".$sSelectId."’).options.selectedIndex = 0;";
$this->addScript($sScript);
}
}
class myXajaxResponse extends xajaxResponse
{
function addAddOption($sSelectId, $sOptionText, $sOptionValue)
{
$sScript = "var objOption = new Option(‘".$sOptionText."’,'".$sOptionValue."’);";
$sScript .= "document.getElementById(‘".$sSelectId."’).options.add(objOption);";
$this->addScript($sScript);
}
function addClearSelect($sSelectId)
{
$sScript .= "document.getElementById(‘".$sSelectId."’).options.length = 0;";
$sScript .= "document.getElementById(‘".$sSelectId."’).options.selectedIndex = 0;";
$this->addScript($sScript);
}
}
//显示留言的函数
function reloaddisplay(){
global $db,$now;
$objResponse = new xajaxResponse();
$tmp="";
$chats = $db->getAll($db->modifyLimitQuery("select * from ".TBL_CHAT." order by chattime desc", 0, 15));
for ($i = 0, $count = count($chats); $i < $count; $i++) {
$tmp.= $chats[$i]['nick'].":".$chats[$i]['words']."<br>";
}
//Delete old data 只保留15条信息
$nr = $db->getOne("select count(*) from ".TBL_CHAT);
if($nr > 15) {
$delnr = $nr – 15;
$db->query("delete from TBL_CHAT order by chattime asc limit $delnr)");
}
global $db,$now;
$objResponse = new xajaxResponse();
$tmp="";
$chats = $db->getAll($db->modifyLimitQuery("select * from ".TBL_CHAT." order by chattime desc", 0, 15));
for ($i = 0, $count = count($chats); $i < $count; $i++) {
$tmp.= $chats[$i]['nick'].":".$chats[$i]['words']."<br>";
}
//Delete old data 只保留15条信息
$nr = $db->getOne("select count(*) from ".TBL_CHAT);
if($nr > 15) {
$delnr = $nr – 15;
$db->query("delete from TBL_CHAT order by chattime asc limit $delnr)");
}
$objResponse->addAssign("display","innerHTML",$tmp);
return $objResponse->getXML();
return $objResponse->getXML();
}
//无提交表单程序,特别注意这里需要用iconv还原url的编码
function speak($formData){
global $db,$now;
$objResponse = new xajaxResponse();
$words = iconv("UTF-8","GBK",$formData['words']);
$nick = iconv("UTF-8","GBK",$formData['nick']);
if(strlen($words) > 0 && strlen($nick) > 0) {
$db->query("insert into ".TBL_CHAT." (nick, words,chattime) values ("
.$db->quote(stripslashes($nick)).", "
.$db->quote(stripslashes($words))
.", ‘$now’)");
}
$objResponse->addClear("words","value");
global $db,$now;
$objResponse = new xajaxResponse();
$words = iconv("UTF-8","GBK",$formData['words']);
$nick = iconv("UTF-8","GBK",$formData['nick']);
if(strlen($words) > 0 && strlen($nick) > 0) {
$db->query("insert into ".TBL_CHAT." (nick, words,chattime) values ("
.$db->quote(stripslashes($nick)).", "
.$db->quote(stripslashes($words))
.", ‘$now’)");
}
$objResponse->addClear("words","value");
return $objResponse->getXML();
}
}
$xajax = new xajax("server1.server.php","xajax_",false);
$xajax->registerFunction("reloaddisplay");
$xajax->registerFunction("speak");
$xajax->processRequests();
?>
include ‘include.php’;
require("xajax.inc.php");
上面这两个文件在哪里啊?
文件呢? —— 2006年01月03日 @12:14 am
同楼上的,同样的疑问,include ‘include.php’;
require("xajax.inc.php");
上面这两个文件在哪里啊?
del000 —— 2006年10月23日 @4:29 pm
好
窃听器 —— 2007年01月06日 @9:46 pm
俺菜俺看不动!
匿名 —— 2007年02月28日 @1:31 pm
世纪网络-专业域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐,申请服务提供商。站长好,你的博客做得真不错,挺有特色的,我会介绍其他朋友也来参观,呵呵。我也有个网站,网址是http://www.sjwlgs.com
是做[url=http://www.sjwlgs.com/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url],[url=http://www.sjwlgs.com/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url][url=http://www.sjwlgs.com/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url][url=http://www.sjwlgs.com/index.asp]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url]有空也来看看
世纪网络-专业域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐,申请服务提供商。站长好,你的博客做得真不错,挺有特色的,我会介绍其他朋友也来参观,呵呵。我也有个网站,网址是http://wed.sjwlgs.com
是做[url=http://wed.sjwlgs.com/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url],[url=http://wed.sjwlgs.com/]虚拟主机[/url][url=http://wed.sjwlgs.com/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url][url=http://wed.sjwlgs.com/index.asp]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url]有空也来看看
域名注册 —— 2007年03月18日 @3:51 am
世纪网络-专业域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐,申请服务提供商。站长好,你的博客做得真不错,挺有特色的,我会介绍其他朋友也来参观,呵呵。我也有个网站,网址是http://www.szwlkj.net/index.asp
是做[url=http://www.szwlkj.net/index.asp/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url],[url=http://www.sjwlgs.com/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url][url=http://www.szwlkj.net/index.asp/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url][url=http://www.szwlkj.net/index.asp/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url]有空也来看看
世纪网络-专业域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐,申请服务提供商。站长好,你的博客做得真不错,挺有特色的,我会介绍其他朋友也来参观,呵呵。我也有个网站,网址是http://www.sjwlgs.com
是做[url=http://www.szwlkj.net/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url],[url=http://www.szwlkj.net/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url][url=http://www.szwlkj.net/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url]url=http://www.sjwlgs.com/index.asp]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url]有空也来看看
世纪网络 —— 2007年03月18日 @3:53 am
世纪网络-专业域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐,申请服务提供商。站长好,你的博客做得真不错,挺有特色的,我会介绍其他朋友也来参观,呵呵。我也有个网站,网址是http://www.sjwlgs.com
是做[url=http://www.szwlkj.net/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url],[url=http://www.szwlkj.net/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url][url=http://www.szwlkj.net/]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url]url=http://www.sjwlgs.com/index.asp]域名注册,虚拟主机,网站空间,网站推广,网站域名,特惠套餐[/url]有空也来看看
域名注册 —— 2007年03月18日 @3:55 am
我认为很好。我以后再做评论。OK 。
张杰 —— 2007年05月10日 @11:39 am
sadasd
sdf —— 2009年10月16日 @10:59 pm
111
asd —— 2009年12月10日 @2:51 pm