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

setTimeout setInterval不起作用
  <script type="text/javascript">

    var second=5000;
    var clearsec=2000;
 
    function cleandoc()
    {
        document.body.innerHTML="";
    };

    function bt_submit_onclick()
    {
        var data={"EVID":"XX","USERNAME":"YY"};
        Ext.Ajax.request({
        url: 'xx/test.cgi',//动态页地址
jsonData:data,
            success: function(response){
            var text = response.responseText;
            document.write(text);
    setTimeout("cleandoc();",clearsec);
            }
        });
    };
  </script>
  
 </HEAD>
<BODY onload="setInterval('bt_submit_onclick();',second)">



我想打开网页后定时获取后台数据,然后清空,上面代码似乎只是打开时获取一次再清空,但后来就不获取了 不知什么原因(分不多了,不好意思)

------解决方案--------------------
url: 'xx/test.cgi?d='+new Date().getTime(),//动态页地址
------解决方案--------------------
我觉得lz的Ext.Ajax再第二次发的时候可能失败了。所以没有setTimeout定时,lz加上:
failure : function() {
     alert('失败!');

看看这句会不会执行。
------解决方案--------------------
setTimeout函数需要递归才能反复执行,把
function cleandoc()
    {
        document.body.innerHTML="";
    };
改成这样:
function cleandoc()
    {
        document.body.innerHTML="";
        setTimeout("cleandoc();",clearsec);
    };
然后在bt_submit_onclick()函数document.write(text);语句下这样调用:
cleandoc();
------解决方案--------------------
setTimeout("cleandoc();",clearsec); 函数名不要加"" 也不要加: 
------解决方案--------------------
 document.write(text); 
会把页面所有代码清空,所以只执行了一次, 你可以用firebug查看
建议进行修改