- 论坛徽章:
- 0
|
不懂什么ajax,按概念理解,自己搞了个自己的AJAX。聊天PHP代码(文件名test.php)如下:
- <?php
- global $callback;
- if ($callback) {
- global $getsource, $isframe, $name, $msg, $refresh, $getall;
- if ($isframe) print "<script text=\"text/javascript\">parent.";
- if ($getsource) {
- $src = highlight_file(__FILE__, TRUE);
- $src = ereg_replace ("\r|\n", "", $src);
- $src = addslashes($src);
- print "$callback('$src');";
- }
- else if (($name && $msg) || $refresh) {
- $chatlog = dirname(__FILE__) . "/chat.log";
- $date = date("Y-m-d h:i:s");
- $addr = $_SERVER["REMOTE_ADDR"];
- $msg_content = htmlspecialchars("$date [$addr][$name]:$msg");
- if ($refresh) {
- $chatlogmsg = file_get_contents($chatlog);
- }
- else {
- $chatlogmsg = file_get_contents($chatlog) . "\n$msg_content";
- file_put_contents($chatlog, $chatlogmsg);
- }
- if (!$getall) {
- $chatlogmsg = explode("\n", $chatlogmsg);
- $chatcount = count($chatlogmsg);
- $chatlogmsg = implode("\n", array_slice($chatlogmsg, $chatcount - 20 > 0 ? $chatcount - 20: 0, 20));
- }
- $chatlogmsg = ereg_replace("\n", "','", $chatlogmsg);
- print "$callback(['$chatlogmsg']);";
- }
- else
- print "$callback(1);";
- if ($isframe) print "</script>";
- } else {?>
- <html><head>
- <title>网页部分刷新测试</title>
- <script text="text/javascript" src="ajax.js"></script>
- <script text="text/javascript">
- new scriptRefresh(1000, "test.php?test=ajaxchat&refresh=1", "PostMessageOK");
- function PostMessage() {
- var url = "test.php?test=ajaxchat&name=" + document.getElementById("name").value + "&msg=" + document.getElementById("msg").value;
- new scriptRequest(url, "PostMessageOK", false);
- document.getElementById("post_status").innerHTML = "发送中,请稍后.....";
- }
- function PostMessageFrame() {
- document.getElementById("post_status").innerHTML = "发送中,请稍后.....";
- return true;
- }
- function PostMessageOK(isOK) {
- if (isOK) {
- document.getElementById("post_status").innerHTML = "";
- if (isOK != 1) {
- var msg_content = "<table>";
- for (var i = 0; i < isOK.length; i++)
- msg_content += "<tr><td>" + isOK[i] + "</td></tr>";
- msg_content += "</table>";
- document.getElementById("msg_content").innerHTML = msg_content;
- }
- }
- else
- document.getElementById("post_status").innerHTML = "发送失败!";
- }
- function PrintSource() {
- new scriptRequest("test.php?test=ajaxchat&getsource=1", "PrintSourceOK", true);
- document.getElementById("pageText").innerHTML = "读取中,请稍后.....";
- }
- function PrintSourceFrame() {
- document.getElementById("pageText").innerHTML = "系统检查中,请稍后.....";
- return true;
- }
- function PrintSourceOK(text) {
- document.getElementById("pageText").innerHTML = text;
- }
- function CloseSourcePrint() {
- document.getElementById("pageText").innerHTML = "";
- }
- </script>
- </head>
- <body>
- <iframe id="Checkframe" name="Checkframe" width="0" height="0"></iframe>
- <fieldset style="background-color: #eee"><legend>ajax分布式测试</lengend>
- <div id="msg_content"></div>
- </fieldset>
- <form action="test.php?test=ajaxchat" method="post" target="Checkframe">
- <input type="hidden" name="callback" value="PostMessageOK">
- 姓名:<input type="text" name="name" size=15 id="name" value="">
- 信息:<input type="text" name="msg" size=50 id="msg" value="">
- <input type="hidden" name="isframe" value=1>
- <input type="submit" onclick="return PostMessageFrame();" value="SEND--iframe">
- <input type="button" onclick="PostMessage(); return false;" value="SEND--AJAX">
- <span id="post_status"></span><br>
- </form>
- <br>
- <form action="test.php?test=ajaxchat" method="post" target="Checkframe">
- <input type="hidden" name="getsource" value=1>
- <input type="hidden" name="isframe" value=1>
- <input type="hidden" name="callback" value="PrintSourceOK">
- <input type="submit" onclick="return PrintSourceFrame()" value="查看本页源代码--iframe">
- <input type="button" onclick="PrintSource(); return false;" value="查看本页源代码--AJAX">
- <input type="button" onclick="CloseSourcePrint(); return false;" value="关闭源代码显示">
- </form>
- <div id="pageText" style="background-color: #eee" ></div>
- </body>
- <?php } ?>
复制代码
其中使用的ajax.js是自己定义的,代码如下:
- scriptRequest = function (url, callBack, isCached, onTimeout, timeout) {
- if (typeof onTimeout != "undefined") this.onTimeout = onTimeout;
- if (typeof scriptRequest.requestQueue == "undefined") scriptRequest.requestQueue = new Array();
- scriptRequest.requestQueue.push(this);
- this.cleanRequest = function () {
- if (this.timeout) window.clearTimeout(this.timeout);
- var jsRequest = document.getElementById("jsRequest" + this.hash);
- if (jsRequest != null && jsRequest.tagName.toLowerCase() == "script") {
- try{
- document.getElementsByTagName("head").item(0).removeChild(jsRequest);
- }catch(err){}
- }
- }
- if (typeof scriptRequest.callback == "undefined")
- scriptRequest.callback = function (hash) {
- for (var i = 0; i < scriptRequest.requestQueue.length; i++) {
- var srRequest = scriptRequest.requestQueue[i];
- if (srRequest && srRequest.hash == hash) {
- if (srRequest.onTimeout) {
- try {
- eval(srRequest.onTimeout);
- } catch(err) {}
- }
- srRequest.cleanRequest();
- delete srRequest;
- break;
- }
- }
- }
- this.hash = new Date().getTime() + scriptRequest.requestQueue.length;
- this.timeout = window.setTimeout("scriptRequest.callback('" + this.hash + "')", timeout ? timeout : 10000);
- if (callBack) url += "&callback=" + callBack;
- if (!isCached) url += "&hash=" + this.hash;
- var jsRequest = document.createElement('script');
- jsRequest.setAttribute("text","text/javaScript");
- jsRequest.setAttribute("id","jsRequest" + this.hash);
- jsRequest.setAttribute("src", url);
- document.getElementsByTagName("head").item(0).appendChild(jsRequest);
- }
- scriptRefresh = function (interval, url, callback, onTimeout, timeout) {
- this.userURL = url;
- this.userInterval = interval;
- this.userCallback = callback;
- this.userOnTimeout = onTimeout;
- this.userTimeout = timeout;
- this.counter = 0;
-
- if (typeof scriptRefresh.timeout == "undefined")
- scriptRefresh.timeout = 0;
- if (typeof scriptRefresh.interval == "undefined") scriptRefresh.interval = 100;
- if (typeof scriptRefresh.refreshQueue == "undefined") scriptRefresh.refreshQueue = new Array();
- if (typeof scriptRefresh.refresh == "undefined")
- scriptRefresh.refresh = function () {
- for (var i = 0; i < scriptRefresh.refreshQueue.length; i++)
- {
- var aRefresh = scriptRefresh.refreshQueue[i];
- if (aRefresh && ++aRefresh.counter == aRefresh.userInterval / scriptRefresh.interval) {
- new scriptRequest(aRefresh.userURL, aRefresh.userCallback, false, aRefresh.userOnTimeout, aRefresh.userTimeout);
- aRefresh.counter = 0;
- }
- }
- }
- scriptRefresh.refreshQueue.push(this);
- if (typeof scriptRefresh.callback == "undefined") {
- scriptRefresh.callback = function() {
- if (scriptRefresh.timeout) window.clearTimeout(scriptRefresh.timeout);
- scriptRefresh.refresh();
- scriptRefresh.timeout = window.setTimeout("scriptRefresh.callback()", scriptRefresh.interval);
- }
- scriptRefresh.callback();
- }
- }
- scriptRefresh.prototype.setInterval = function (interval) {
- if (scriptRefresh.interval != interval) {
- for (var i = 0; i < scriptRefresh.refreshQueue.length; i++)
- scriptRefresh.refreshQueue[i].counter = scriptRefresh.refreshQueue[i].counter * this.interval / interval;
- }
- scriptRefresh.interval = interval;
- }
- scriptRefresh.prototype.removeRefresh = function (srRefresh) {
- for (var i = 0; i < scriptRefresh.refreshQueue.length; i++)
- if (scriptRefresh.refreshQueue[i] == srRefresh) {
- delete scriptRefresh.refreshQueue[i];
- break;
- }
- }
复制代码
[ 本帖最后由 ftInternet 于 2007-2-5 10:11 编辑 ] |
|