实例展示
在线聊天室
《锋利的jquery》主题内容之后,附带了一个在线聊天室的实例代码参考,在理解了大致思路之后,我按照自己的想法制作了一个聊天室,后续可能会有扩展(待定)
1.实现思路
- 简单的来说就是将本地信息的上传到网络,之后同步信息到另外一个页面;
- 因为js需要借助后端来交互数据,所以这次后端选用php;
- 大致流程:
- 打开网页输入名称(不能重复),用于在数据库检测信息来源
- 进入聊天页面,前端检测是否有新的信息输入
有两种情况:1.本页面输入;2.对方页面输入
- 如果有,数据将通过后台传入数据库,并返回数据库中信息的数量,
通过比较前端页面中显示的信息数量,来判断是否要更新页面 - 当页面没有新的数据XX秒之后,关闭页面
2.代码
数据库
这次数据库只是作为信息传递的跳板,不需要很复杂,
user
用户名作为代号显示信息来源,info
暂时储存传递的信息,默认id
主键自增,设置编码为utf-8;CREATE TABLE IF NOT EXISTS
chats
(id
int(6) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,info
mediumtext NOT NULL,user
VARCHAR(100) NOT NULL
)CHARSET=UTF8;
后台
- 简单的数据读写,根据前端传入关键词选择操作
前端
- js库为 jquery*
HTML结构:
<div id="box">
<div id="outb">
<div id="chatinfo"> </div>
</div>
<div id='chatipt'>
<input type="text" name="" placeholder="点击输入" />
<button type="button">发送</button>
</div>
</div>- 截取一段js代码
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28function getinfo(){ //获取信息
if (state==1) { //检测状态state,如果等于1表示之前的ajax还未执行完毕,则跳过本次
return;
}
state=1;
$.ajax({
url:'php/chatdata.php',
type:'post',
data:{
name:name,
info:'',
num:$('#chatinfo div').length//获取当前页面信息数量,传递后台
},success:function(a){
if (a=='') {if (timer==''){timer=setTimeout(candel,'300000');}return;};//重置计时器
for(var i in JSON.parse(a)){//将后台数据输出到前端页面
$('#chatinfo').append('<div><p class=yinfo>'+JSON.parse(a)[i].info+'</p></div>');
var bb = $('#chatinfo')[0].offsetHeight-$('#chatinfo').parent().height();
aa = -bb;
$('#chatinfo').animate({'top':aa+'px'},200);
clearTimeout(timer);
timer='';
};
echo(JSON.parse(a),state);//封装的控制台输出函数,相当于console.log()
},complete:function(){
state=0;//成功获取后台信息,将state设置为0,表示可以继续获取数据
}
})
}
- 截取一段js代码
最主要的是前端信息的检测与处理