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

解决方案 »

  1.   

    缓存了吧,url加上随机数试试看
      

  2.   

    url: 'xx/test.cgi?d='+new Date().getTime(),//动态页地址
      

  3.   

    我觉得lz的Ext.Ajax再第二次发的时候可能失败了。所以没有setTimeout定时,lz加上:
    failure : function() {
         alert('失败!');

    看看这句会不会执行。
      

  4.   

        function bt_submit_onclick()
        {
            var data={"EVID":"XX","USERNAME":"YY"};
            Ext.Ajax.request({
            url: 'vodbin/vod.fcgi?='+new Date().getTime(),//动态页地址
    jsonData:data,
            //params: data,//键值对形式
            //params:{data:Ext.encode(data)},//原始JSON结构形式
                success: function(response){
                var text = response.responseText;
                // process server response here
                document.write(text);
        //setTimeout("cleandoc();",1000);
                },
        failure: function() {
           alert('失败!');
        }
            });
        };还是不行,也没跳出失败
      

  5.   

    setTimeout函数需要递归才能反复执行,把
    function cleandoc()
        {
            document.body.innerHTML="";
        };
    改成这样:
    function cleandoc()
        {
            document.body.innerHTML="";
            setTimeout("cleandoc();",clearsec);
        };
    然后在bt_submit_onclick()函数document.write(text);语句下这样调用:
    cleandoc();
      

  6.   

    抱歉,上面的代码只是定时反复清空,你要反复获取,每获取一次清空一次的话,
    bt_submit_onclick()函数体内的代码(要做些修改)应该放在另外一个函数中(如命名为:getDataAndClearDoc),
    在这个getDataAndClearDoc函数体内执行获取数据和清空的代码,
    在getDataAndClearDoc的最后使用setTimeout("getDataAndClearDoc();",clearsec);
      

  7.   

    你试试下面的代码行不行:var second=5000;
    getDataAndClearDoc()
    {
        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);
    }
    });
    setTimeout("getDataAndClearDoc();",clearsec);
    }  
    function cleandoc()
    {
    document.body.innerHTML="";
    };function bt_submit_onclick()
    {
    getDataAndClearDoc();
    };
      

  8.   

    setTimeout("cleandoc();",clearsec); 函数名不要加"" 也不要加: 
      

  9.   

     document.write(text); 
    会把页面所有代码清空,所以只执行了一次, 你可以用firebug查看
    建议进行修改
      

  10.   

    不会呀,如下面的代码,使用了document.write,亲测,可行:<!DOCTYPE html>
    <html>
    <head>
    <meta charset="utf-8" />
    <title>Temp</title>
    <script type="text/javascript">
    var second=5000;
    var clearsec=2000;
      
    function cleandoc()
    {
    document.body.innerHTML="";
    };function bt_submit_onclick()
    {
    document.write("avbsjkiu");
    setTimeout(cleandoc,clearsec);
    };
    </script>
    </head>
    <body onLoad="setInterval('bt_submit_onclick();',5000)"> </body>
    </html>
      

  11.   

    经实测,发现楼主的代码只有一句不妥:
    <BODY onload="setInterval('bt_submit_onclick();',second)">
    这里在Chrome下会发现有以下错误:
    Uncaught ReferenceError: sencond is not defined 改成下面的就不会报错了:
    <BODY onload="setInterval('bt_submit_onclick();',5000)">
      

  12.   

        function cleandoc()
        {
            document.body.innerHTML="";
        };    function bt_submit_onclick()
        {
            var data={"EVID":"XX","USERNAME":"YY"};
            Ext.Ajax.request({
            url: 'tst/tst.cgi?='+new Date().getTime(),//动态页地址
    jsonData:data,
                success: function(response){
                var text = response.responseText;   
                document.body.innerHTML=text;
        setTimeout("cleandoc();",1000);
                },
        failure: function() {
           alert('失败!');
        }
            });
        };
      </script>
      
     </HEAD>
    <BODY onload="setInterval('bt_submit_onclick();',5000)">
    以上代码还是不行 结果与一楼一致
      

  13.   


    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Temp</title>    <script type="text/javascript">
            var second = 5000; var clearsec = 2000;
            function cleandoc() { document.body.innerHTML = ""; };
            function bt_submit_onclick() {
                document.write(document.body.innerHTML+="avbsjkiu");
            //    setTimeout(cleandoc, clearsec); 
            };  
                 </script></head>
    <body onload="setInterval('bt_submit_onclick();',5000)">
    1
    </body>
    </html>你会发现只执行了一次
      

  14.   

    <!DOCTYPE html>
    <html>
    <head>
        <meta charset="utf-8" />
        <title>Temp</title>    <script type="text/javascript">
            var count = 0;
            function cleandoc()     {         
                document.body.innerHTML="";     
            };
           function bt_submit_onclick()     {
                var data={"EVID":"XX","USERNAME":"YY"};         
    //                Ext.Ajax.request({
    //                    url: 'tst/tst.cgi?=' + new Date().getTime(), //动态页地址
    //                    jsonData: data,
    //                    success: function(response) {
    //                    var text = response.responseText;
    //                    setTimeout("cleandoc();", 1000);
    //                    document.body.innerHTML = text;
    //                },
    //                failure: function() {
    //                    alert('失败!');
                //                }});
                count++; 
                cleandoc();
                document.body.innerHTML = "请求成功!! " + count+"次";
            };
            </script></head>
    <body onload="setInterval('bt_submit_onclick();',5000)">
        1
    </body>
    </html>这样可以,你改下吧
      

  15.   

    那段代码是我在Chrome浏览器测试过的,能反复执行。
      

  16.   

    我用Chrome测试确实可行,后来我再用IE10和FF来测就有问题了。
    IE10执行一次后,页面的DOCTYPE等都被清理了,只有avbsjkiu,
    FF执行一次后,选项卡标题一直显示“正在连接”。
    其实,Chrome的处理是正确的,因为document.body.innerHTML和document.write应该
    只对body元素内的内容进行覆写,不应该影响doctype, html, head等页面元素。