实现一个无刷新的基于ajax的简易聊天室
来源:百度文库 编辑:神马文学网 时间:2024/04/28 07:52:17
实现一个基于ajax的简易聊天室
1 程序主页面
在线交流对话
include_once("server1.server.php"); #servidor para XAJAX
$xajax->printJavascript();
?>
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;
3 服务器端
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);
}
}
//显示留言的函数
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‘]."
";
}
//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();
}
//无提交表单程序,特别注意这里需要用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");
return $objResponse->getXML();
}
$xajax = new xajax("server1.server.php","xajax_",false);
$xajax->registerFunction("reloaddisplay");
$xajax->registerFunction("speak");
$xajax->processRequests();
?>
1 程序主页面
include_once("server1.server.php"); #servidor para XAJAX
$xajax->printJavascript();
?>
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;
3 服务器端
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);
}
}
//显示留言的函数
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‘]."
";
}
//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();
}
//无提交表单程序,特别注意这里需要用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");
return $objResponse->getXML();
}
$xajax = new xajax("server1.server.php","xajax_",false);
$xajax->registerFunction("reloaddisplay");
$xajax->registerFunction("speak");
$xajax->processRequests();
?>
实现一个无刷新的基于ajax的简易聊天室
ajax实现的无刷新在线聊天插件,效果极类似QQ聊天界面,网上还没有像这样实现的。 插件专...
基于AJAX的WEB设计
基于AJAX的动态树型结构的设计与实现
基于AJAX的动态树型结构的设计与实现
基于AJAX的动态树型结构的设计与实现
一个ajax的例子(连动列表实现)
Ajax技术(WEB无刷新提交数据)
实现AJAX风格的Portal
实现AJAX风格的Portal
基于JSON的高级AJAX开发技术
基于JSON的高级AJAX开发技术
自动刷新页面的实现方法总结
自动刷新页面的实现方法总结
Jquery的get方式实现AJAX
使用AJAX技术打造博客无刷新搜索引擎
使用AJAX技术打造博客无刷新搜索引擎
.net环境下基于ajax的mvc方案
基于AJAX的WEB应用会取代桌面应用?
.Net环境下基于Ajax的MVC方案
Thinking in AJAX(二) —— 基于AJAX的WEB设计
基于Linux的视频点播系统的实现
基于S3C2410的GPS通讯的实现
改变世界的聊天室