ajax无刷新聊天室,实现一个无刷新的基于ajax的简易聊天室

实现一个基于ajax的简易聊天室

1 程序主页面

在线交流对话

include_once("server1.server.php"); #servidor para XAJAX

$xajax->printJavascript();

?>

function reloaddisplay()

{

xajax_reloaddisplay();

}

setInterval(reloaddisplay,5000); //五秒钟自动读取最新的留言15条

function onSubmit() {

xajax_speak(xajax.getFormValues("speakForm"));

}

Please into your words here!

Speak:

//点击按钮时提交

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();

?>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值