日期:2014-05-16  浏览次数:20475 次

javascript陷入死循环了,很简单 帮看看,谢谢
<script   language= "JavaScript ">  


function   GetResult()  
{  
/*  
*---------------   GetResult()   -----------------  
*   GetResult()  
*   功能:通过XMLHTTP发送请求,返回结果.  
*   参数:str,字符串,发送条件.  
*   实例:GetResult();  
*---------------   GetResult()   -----------------  
*/  

//   单位:毫秒
var   timeInterval   =   200;

var   oBao   =   new   ActiveXObject( "Microsoft.XMLHTTP ");  
//特殊字符:+,%,&,=,?等的传输解决办法.字符串先用escape编码的.  
oBao.open( "POST ", "asptxt.asp ",false);  
oBao.send();  
//服务器端处理返回的是经过escape编码的字符串.  
var   strResult   =   unescape(oBao.responseText);  
//将字符串分开.  
var   arrTmp   =   strResult.split( "@@@ ");  
var   j=0;
window.setInterval(writeNum,   timeInterval);
function   writeNum()
{
      var   oTab   =   document.getElementById( "tb1 ");
    {
    if(j <arrTmp.length)
            {     oTab.rows[0].cells[0].innerHTML   =   arrTmp[j++];   }
     
    else
          {   j=0;   GetResult()}
    }
 
  }

}
<table   width= "47% "   height= "23 "   border= "0 "   cellpadding= "1 "   cellspacing= "0 "   id= "tb ">  
<tr>  


</tr>  
</table>  

问题肯定是在   {   j=0;   GetResult()}   这句
当循环完了,之后,用GetResult()我想从服务器得到新数据,但是效果是:内容更新变化越来越快,cpu利用率从最初的0到100%。

------解决方案--------------------
代码乱七八糟滴,俺不是已经给 lz 回帖了,

先把思路搞清楚再往下写吧!
------解决方案--------------------
确实很乱,试试这样:

var MyMar=window.setInterval(writeNum, timeInterval);
……
{j=0;clearInterval(MyMar);GetResult()}
------解决方案--------------------
很多情况会让这个程序进入死循环!

最有可能,你的arrTmp.length一直等于0

所以你程序一直ajax

200ms的时间太短了。