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

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

1 程序主页面



在线交流对话


 include_once("server1.server.php"); #servidor para XAJAX
 $xajax->printJavascript();
?>




 

<script language=javascript>
function reloaddisplay()
{
xajax_reloaddisplay();
}
setInterval(reloaddisplay,5000); //五秒钟自动读取最新的留言15条
</script>

<script language=javascript>
    function onSubmit() {
      xajax_speak(xajax.getFormValues("speakForm"));
    }
</script>



 

  Please into your words here!
 
 
  //点击按钮时提交
 
 



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



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=510970


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值