ajax为什么会使CPU达到100%

yqh2009 2008-09-19 07:55:36
小弟刚学asp
想用asp+ajax做个聊天室,但是代码中的ajax经常会使CPU跳到100%

下面是我其中的一个asp文件

common.asp

<html>


<head>
<META http-equiv=Content-Type content="text/html; charset=gbk">
</head>

<%@ language="JScript"%>

<textarea rows="15" cols="80" readonly="true" id="message" name="message">

<%

var app = new Enumerator(Application.Contents);
while(!app.atEnd())
{
var str=app.item();
var value = Application.Contents.Item(str);
Response.write(value);

app.moveNext();
}

%>
<!--#include file="common.asp"-->

</textarea>



<SCRIPT LANGUAGE="JavaScript" src="prototype.js">
</SCRIPT>




<form action="server.asp" method="post">
<input type="hidden" name="name" value="">
<textarea name="talk"></textarea>
<input type="submit" value="submit" >
</form>
<input type="button" onclick="clearTime()">



<script language="javascript" type="text/javascript">

var req;
req=new XMLHttpRequest();//创建XMLHTTPRequest对象


function GetInfo(){
var pars='';//参数
var url="server.asp?name=&talk=&get="+Math.random();

// req=new Ajax.Request(url,{method:'get',parameters:pars,onComplete:parseMessage});
req=new ActiveXObject("Microsoft.XMLHTTP");
req.open("get", url, true);
// req.setRequestHeader("Context-Type", "text/html; charset=utf-8");
req.onreadystatechange = callback;//请求回调函数
req.send(null);
}

function callback(){

if(req.readyState==4){ //判断就绪状态

if(req.status==200){
parseMessage();//接收返回的数据
//更新网页的内容

}else {
alert("Not able to retrieve description "+req.statusText);
}
}
else {}

}


function obj(s){
try{ stringToXML_soap=new ActiveXObject("Microsoft.XMLDOM");
stringToXML_soap.async = false;
stringToXML_soap.loadXML(arguments[0]);
return stringToXML_soap.documentElement;
} catch(e) {
var soap=new DOMParser();
var stringToXML_soap=soap.parseFromString(arguments[0],"text/xml");
return stringToXML_soap;
}

}


function parseMessage(req){


var xmldoc=obj(req.responseText); //获得返回的数据
var Node=xmldoc.getElementsByTagName("message"); //获得文件中的<info>标记

if(Node[0].text!="")
document.getElementById("message").value+=Node[0].text ;

}

temp = window.setInterval("GetInfo()", 3000);


function clearTime(){
clearInterval(temp);
}


</script>

...全文
188 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
starwu 2008-09-21
  • 打赏
  • 举报
回复
一段一段的自己调试吧!这么长...头晕...
mmidd 2008-09-21
  • 打赏
  • 举报
回复
太长了代码,肯定有地方有死循环。楼主仔细检查一下吧,代码一段一段测试
Anlige 2008-09-20
  • 打赏
  • 举报
回复
..............................

yqh2009 2008-09-20
  • 打赏
  • 举报
回复
我是在本机上调式啊,但是我都没有连数据库啊
xuStanly 2008-09-20
  • 打赏
  • 举报
回复
代码没看。
楼主是不是在本机上调试程序?
如果是,则可能性有两个:
一是服务器端程序有死循环或不当使用on error resume next或未关闭数据库连接。
二是客户端代码有问题,导致IE占用CPU过高。
yhfaster 2008-09-20
  • 打赏
  • 举报
回复
看起来麻烦
yqh2009 2008-09-19
  • 打赏
  • 举报
回复
下面的文件是server.asp


<%@ language="JScript"%>
<!--#include file="common.asp"-->

<%

if((Request("name"))!=""){

Application.Lock();

Application.Contents(getDate(new Date()))=Request("name")+" "+ getDate(new Date())+" 登录进来\n";

clear();

Application.UnLock();

Session("name")=Request("name")+"";

Session("time")=getDate(new Date());
Response.Redirect("talk.asp");
}


else if(Request("talk")!=""){

Application.Lock();

Application.Contents(getDate(new Date()))=Session("name")+" "+ getDate(new Date())+" 说 "+Request("talk")+"\n";

clear();
var app = new Enumerator(Application.Contents);



while(!app.atEnd())
{
var value = Application.Contents.Item(app.item());

if(xiangge(Session("time"),app.item())<0){
Response.write(value);

}
app.moveNext();
}



Application.UnLock();

Session("time")=getDate(new Date());
Response.Redirect("talk.asp");
}

else {

Application.Lock();
clear();

var app = new Enumerator(Application.Contents);

Response.write("<?xml version=\"1.0\" encoding=\"UTF-8\"?><messages><message>");

while(!app.atEnd())
{
var value = Application.Contents.Item(app.item());



if(xiangge(app.item(),Session("time"))>0){
Response.write(value);

}
app.moveNext();
}

Response.write("</message></messages>");

Session("time")=getDate(new Date());
Application.UnLock();

Response.Flush();
}
%>



yqh2009 2008-09-19
  • 打赏
  • 举报
回复
上面的asp文件名应该是talk.asp,下面的才是common.asp文件

<%
function getDate(tt){
return tt.getHours()+"."+tt.getMinutes()+":"+tt.getSeconds();

}


function isBig(t1,t2){
if(t1==t2){return false;}

if(t1.substring(0,t1.indexOf("."))-t2.substring(0,t2.indexOf("."))>0){
return true;
}

if(t1.substring(t1.indexOf(".")+1,t1.indexOf(":"))-t2.substring(t2.indexOf(".")+1,t2.indexOf(":"))>0){
return true;
}

if(t1.substring(t1.indexOf(":")+1,t1.length())-t2.substring(t2.indexOf(":")+1,t2.length())>0){
return true;
}

return false;
}




function xiangge(t1,t2){
if(t1==t2){return 0;}

if(t1.substring(0,t1.indexOf("."))-t2.substring(0,t2.indexOf("."))>0){
return (t1.substring(0,t1.indexOf("."))-t2.substring(0,t2.indexOf(".")))*60*60;
}

if(t1.substring(t1.indexOf(".")+1,t1.indexOf(":"))-t2.substring(t2.indexOf(".")+1,t2.indexOf(":"))>0){
return (t1.substring(t1.indexOf(".")+1,t1.indexOf(":"))-t2.substring(t2.indexOf(".")+1,t2.indexOf(":")))*60;
}

if(t1.substring(t1.indexOf(":")+1,t1.length)-t2.substring(t2.indexOf(":")+1,t2.length)>0){
return (t1.substring(t1.indexOf(":")+1,t1.length)-t2.substring(t2.indexOf(":")+1,t2.length));
}

return 0;
}


function clear(){

var array=new Array();
var j=0;
var app = new Enumerator(Application.Contents);
while(!app.atEnd())
{
var value = Application.Contents.Item(app.item());

if(xiangge(getDate(new Date()),app.item())>60){
array[j]=(getDate(new Date()));
j++;

}
app.moveNext();
}


for(var i=0;i<j;j++){
Application.Contents.Remove(array[i]);
}

}
%>


28,390

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧