本文实例讲述了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程序设计有所帮助。