PHP jquery ajax实现即时聊天功能
这是一个简单的利用jquery与php做的一个聊天室的源码,我们这里定时利用ajax读取数据库并进行刷新了,下面直接参上源码,实例代码如下:
//index.html
<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title> <script src="http://code.jquery.com/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(); } }); www.111cn.net }, 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; www . phprm . com 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; } }
本文地址:http://www.phprm.com/develop/fs5924.html
转载随意,但请附上文章地址:-)