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();
?>
ajax无刷新聊天室,实现一个无刷新的基于ajax的简易聊天室相关推荐
- 基于Socket的简易聊天工具
文章目录 基于Socket的简易聊天工具 简易聊天工具的功能: 项目设计 1.界面设计 2.类的设计 程序编写 1.ChatServer 2.ChatFrame 窗体的设计 1.ChatFrame的窗 ...
- 基于JAVA-SOCKET的简易聊天器
经过对socket编程的学习,结合前人已做出的聊天器,加以修改后,最终地,制作出JAVA版简易聊天器. 以下是代码: client类 public class Client{private JFram ...
- 基于python的聊天软件的设计与实现_Python基于TCP实现会聊天的小机器人功能示例...
本文实例讲述了Python基于TCP实现会聊天的小机器人功能.分享给大家供大家参考,具体如下: 一 代码 1.服务端程序 import socket words ={'how are you?':'F ...
- 教你写一个基于TCP的简易聊天室
一.环境准备 Mac下命令查询网络端口占用情况 netstat命令 netstat -an | grep 3000 3000可以替换为你所需要查询的端口号 lsof命令 通过list open fil ...
- 局域网通信 | 基于广播实现简易聊天室
前言 事情是这个样子的,实验室的那个横向项目有一个需求:同一个 WIFI 下的设备之间可以实现实时的语音聊天. 于是这两天抽空闲时间捣鼓了一下局域网通信.现在基本实现语音通信了,是基于 UDP 广播实 ...
- Vue3 -- 基于Websocket实现简易聊天室
文章目录 标题 代码地址 表情包资源 chat.data.ts index.vue 标题 接上一篇博文 这里使用 Vue3 + Typescript + Websocket 实现在线聊天功能的前端部分 ...
- ios uiview 如何刷新_ios – 从另一个UIViewController刷新表
选项1 @类2 @property (nonatomic) BOOL shouldRefresh; // in .h file - (void)viewWillAppear:(BOOL)animate ...
- 局域网聊天程序 java MySQL_课内资源 - 基于JAVA的局域网聊天软件的设计与实现(仿制QQ)...
一.系统分析 1.1 问题描述客户端 实现简易版的局域网聊天器 实现富文本内容聊天 智能聊天机器人 群发消息 传送文件等功能 服务器端 实现群发通知 管理聊天线程 1.2 系统功能分析客户端功能 登陆 ...
- 超详细:实现过程-Linux 环境下的简易聊天室,采用CS模型,实现多客户端之间的稳定数据传输。--注册和登录(但之后会连续更新内容,直至全部实现)
前言 在学完不够全面的Linux操作系统编程后(这也意味着我后期也要不断学习,这也符合我活到老学到老的人生观点),需要以一些项目来检测自己的所学,毕竟实践见真章. 所以在今后的几天里,我将以无界面聊天 ...
最新文章
- python字符串与列表与运算_[Python学习笔记1]Python语言基础 数学运算符 字符串 列表...
- ModBus协议寄存器
- React:创建用于获取数据的自定义Hook
- vue 第一天(基本的结构)
- mybatis--关于接口参数注解的几个小问题
- sublime text 使用小技巧
- 第十一周项目6-回文素数(一)
- 小程序生态化,Hybrid App要崛起了?
- 迁移学习——Balanced Distribution Adaptation for Transfer Learning
- winehq-stable-5.0 Download For Mac 在Mac上运行exe文件
- window XP驱动开发(一)如何下载WDK
- 斐波纳契数列(Fibonacci Sequence),又称黄金分割数列
- 【在Linu系统下安装 TeXstudio、mplayer、WPS、Python、mendeley、WeChat、搜狗输入法】
- 51单片机数码管滚动显示学号_单片机数码管显示0到9程序代码
- MATLAB基础应用精讲-【基础知识篇】脚本文件
- 爬取动态网站表格内容
- JS设计“网页在线编辑器”
- EMC,EMI和EMS 有什么区别和联系?
- PS中3D选项是灰色的,不能点击,如何处理?
- linux xhci源码,xHCI驱动学习(1) 核心数据结构
热门文章
- 超越CLIP!谷歌大脑多模态学习新作CLIPPO:仅从像素理解图像和语言
- 虚拟服务器nat模式,nat模式虚拟机宿主机相互ping通
- win10自带的edge浏览器,显示‘嗯,我们找不到网页’
- 【设计思考】内容过多,图上放不下怎么办?
- Python入门-运算符
- 一个新的APP上app store 所需的p12证书及.mobileprovision文件申请过程
- 最新web前端面试题大全
- oracle ora 01144,ORA-01144: File size (4194304 blocks) exceeds maximum of 4194303 blocks
- NumPy学习笔记(四)—— argmax()函数
- day06-循环和列表