实现一个基于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();

?>

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐