本文实例讲述了PHP+jquery+ajax实现即时聊天功能的方法。分享给大家供大家参考。具体如下:
这是一个简单的利用jquery与php做的一个聊天室的源码,我们这里定时利用ajax读取数据库并进行刷新了,下面直接参上源码,实例代码如下:
index.html页面如下:
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>无标题文档</title>
<script src=\"js/jquery-1.9.1.min.js\"></script>
<script>
var chat = {
init:function(){
chat.first();
$(\'#chat_btn\').unbind(\'click\').click(function(){
chat.send();
});
$(\'#my_chat\').keyup(function(){
if(event.keyCode == 13){
chat.send();
}
});
},
first:function(){
$.getJSON(\'data.php\',{
action:\'first\',
type:\'l\'
},function(data){
chat.btn_status._true();
$(\'#mwebtime\').html(data.time);
$(\'#chat textarea\').val(data.chat);
$(\'#chat textarea\').stop(true,true).animate({scrollTop:9999}, 1);
chat.socket();
});
},
send:function(){
chat.btn_status._false();
$.getJSON(\'send.php\',{
txt:$(\'#my_chat\').val(),
type:\'l\'
},function(data){
if(data.status==200){
chat.btn_status._false();
$(\'#my_chat\').val(\'\');
setTimeout(function(){
chat.btn_status._true();
},2000);
}
});
},
socket:function(){
$.getJSON(\'data.php\',{
action:\'while\',
type:\'l\'
},function(data){
$(\'#mwebtime\').html(data.time);
$(\'#chat textarea\').val(data.chat);
$(\'#chat textarea\').stop(true,true).animate({scrollTop:9999}, 1);
chat.socket();
});
},
btn_status:{
_false:function(){
$(\'#chat_btn\').html(\'等待\').attr(\'disabled\',true);
},
_true:function(){
$(\'#chat_btn\').html(\'发言\').attr(\'disabled\',false);
}
}
}
chat.init();
</script>
</head>
<body>
<div id=\"chat\">
<textarea wrap=\"physical\" style=\"line-height:20px;font-size:12px;height:100px;width:200px;\"></textarea>
<BR />
<input id=\"my_chat\" type=\"text\" />
<button id=\"chat_btn\" disabled=\"disabled\">发言</button>
</div>
<div id=\"mwebtime\"></div>
</body>
</html>
data.php页面如下:
<?php
header(\"Expires: Mon, 26 Jul 1997 05:00:00 GMT\");
header(\"Last-Modified: \".gmdate(\"D, d M Y H:i:s\").\" GMT\");
header(\"Cache-Control: no-cache, must-revalidate\");
header(\"Pramga: no-cache\");
set_time_limit(0);
$get = $_GET[\'action\'];
$type = $_GET[\'type\'];
$file = $type.\'.txt\';
if(isset($get) && isset($type) && file_exists($file)){
switch($get){
case \'first\':
$chat = file_get_contents($file);
$json=array(
\'status\' => 200,
\'time\' => gmdate(\"s\"),
\'chat\' => $chat,
);
echo json_encode($json);
break;
case \'while\':
$oldsize = filesize($file);
$newsize = filesize($file);
while(true){
if($oldsize!=$newsize){
$chat = file_get_contents($file);
$json=array(
\'status\' => 200,
\'time\' => gmdate(\"s\"),
\'chat\' => $chat,
);
echo json_encode($json);
exit;
}
clearstatcache();
$newsize = filesize($file);
usleep(10000);
}
break;
}
}
?>
send.php页面如下:
<?php
$json = array();
$txt = isset($_GET[\'txt\'])?$_GET[\'txt\']:\'\';
$type = isset($_GET[\'type\'])?$_GET[\'type\']:\'\';
if($txt!=\'\'){
$file = $type.\".txt\";
if(file_exists($file)){
$fp = fopen($file,\"a\");
$str = \"rn\".\'Admin:\'.$txt;
//$str = $txt.\"n\"//linux;
fwrite($fp, $str);
fclose($fp);
$json[\'status\']=200;
echo json_encode($json);
exit;
}
}
?>
希望本文所述对大家的php程序设计有所帮助。