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

?>

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

  1. 基于Socket的简易聊天工具

    文章目录 基于Socket的简易聊天工具 简易聊天工具的功能: 项目设计 1.界面设计 2.类的设计 程序编写 1.ChatServer 2.ChatFrame 窗体的设计 1.ChatFrame的窗 ...

  2. 基于JAVA-SOCKET的简易聊天器

    经过对socket编程的学习,结合前人已做出的聊天器,加以修改后,最终地,制作出JAVA版简易聊天器. 以下是代码: client类 public class Client{private JFram ...

  3. 基于python的聊天软件的设计与实现_Python基于TCP实现会聊天的小机器人功能示例...

    本文实例讲述了Python基于TCP实现会聊天的小机器人功能.分享给大家供大家参考,具体如下: 一 代码 1.服务端程序 import socket words ={'how are you?':'F ...

  4. 教你写一个基于TCP的简易聊天室

    一.环境准备 Mac下命令查询网络端口占用情况 netstat命令 netstat -an | grep 3000 3000可以替换为你所需要查询的端口号 lsof命令 通过list open fil ...

  5. 局域网通信 | 基于广播实现简易聊天室

    前言 事情是这个样子的,实验室的那个横向项目有一个需求:同一个 WIFI 下的设备之间可以实现实时的语音聊天. 于是这两天抽空闲时间捣鼓了一下局域网通信.现在基本实现语音通信了,是基于 UDP 广播实 ...

  6. Vue3 -- 基于Websocket实现简易聊天室

    文章目录 标题 代码地址 表情包资源 chat.data.ts index.vue 标题 接上一篇博文 这里使用 Vue3 + Typescript + Websocket 实现在线聊天功能的前端部分 ...

  7. ios uiview 如何刷新_ios – 从另一个UIViewController刷新表

    选项1 @类2 @property (nonatomic) BOOL shouldRefresh; // in .h file - (void)viewWillAppear:(BOOL)animate ...

  8. 局域网聊天程序 java MySQL_课内资源 - 基于JAVA的局域网聊天软件的设计与实现(仿制QQ)...

    一.系统分析 1.1 问题描述客户端 实现简易版的局域网聊天器 实现富文本内容聊天 智能聊天机器人 群发消息 传送文件等功能 服务器端 实现群发通知 管理聊天线程 1.2 系统功能分析客户端功能 登陆 ...

  9. 超详细:实现过程-Linux 环境下的简易聊天室,采用CS模型,实现多客户端之间的稳定数据传输。--注册和登录(但之后会连续更新内容,直至全部实现)

    前言 在学完不够全面的Linux操作系统编程后(这也意味着我后期也要不断学习,这也符合我活到老学到老的人生观点),需要以一些项目来检测自己的所学,毕竟实践见真章. 所以在今后的几天里,我将以无界面聊天 ...

最新文章

  1. python字符串与列表与运算_[Python学习笔记1]Python语言基础 数学运算符 字符串 列表...
  2. ModBus协议寄存器
  3. React:创建用于获取数据的自定义Hook
  4. vue 第一天(基本的结构)
  5. mybatis--关于接口参数注解的几个小问题
  6. sublime text 使用小技巧
  7. 第十一周项目6-回文素数(一)
  8. 小程序生态化,Hybrid App要崛起了?
  9. 迁移学习——Balanced Distribution Adaptation for Transfer Learning
  10. winehq-stable-5.0 Download For Mac 在Mac上运行exe文件
  11. window XP驱动开发(一)如何下载WDK
  12. 斐波纳契数列(Fibonacci Sequence),又称黄金分割数列
  13. 【在Linu系统下安装 TeXstudio、mplayer、WPS、Python、mendeley、WeChat、搜狗输入法】
  14. 51单片机数码管滚动显示学号_单片机数码管显示0到9程序代码
  15. MATLAB基础应用精讲-【基础知识篇】脚本文件
  16. 爬取动态网站表格内容
  17. JS设计“网页在线编辑器”
  18. EMC,EMI和EMS 有什么区别和联系?
  19. PS中3D选项是灰色的,不能点击,如何处理?
  20. linux xhci源码,xHCI驱动学习(1) 核心数据结构

热门文章

  1. 超越CLIP!谷歌大脑多模态学习新作CLIPPO:仅从像素理解图像和语言
  2. 虚拟服务器nat模式,nat模式虚拟机宿主机相互ping通
  3. win10自带的edge浏览器,显示‘嗯,我们找不到网页’
  4. 【设计思考】内容过多,图上放不下怎么办?
  5. Python入门-运算符
  6. 一个新的APP上app store 所需的p12证书及.mobileprovision文件申请过程
  7. 最新web前端面试题大全
  8. oracle ora 01144,ORA-01144: File size (4194304 blocks) exceeds maximum of 4194303 blocks
  9. NumPy学习笔记(四)—— argmax()函数
  10. day06-循环和列表