Javascript SetInterval messagebox更新通过重载导致页面崩溃

Javascript SetInterval messagebox更新通过重载导致页面崩溃,javascript,ajax,setinterval,Javascript,Ajax,Setinterval,您好,我有一个消息框,用户可以放置消息,我使用ajax更新消息,并使用setinterval每隔20秒自动更新消息。。但是,我使用的代码使用间隔调用重载页面。从下面的代码中,任何人都可以看到我哪里出错了,以及我将如何处理这一问题,从而使间隔处于单个循环中。谢谢 $(function(){ $(document).keypress(function() { clearInterval(running); }) var running = setInt

您好,我有一个消息框,用户可以放置消息,我使用ajax更新消息,并使用setinterval每隔20秒自动更新消息。。但是,我使用的代码使用间隔调用重载页面。从下面的代码中,任何人都可以看到我哪里出错了,以及我将如何处理这一问题,从而使间隔处于单个循环中。谢谢

$(function(){


$(document).keypress(function() {
        clearInterval(running); 
    })

        var running = setInterval(function (){ 
        var varLISTID = document.getElementById('datacatch').getAttribute("data-variable-LISTID");  
        var varUSERACCOUNTNAME = document.getElementById('datacatch').getAttribute("data-variable-USERACCOUNTNAME");
        var mylink = "loadmessages.php?listID=" + varLISTID + "&useraccountname="+ varUSERACCOUNTNAME;
        $('#infobox1').load(mylink);
           },20000); //10s
});
SetTimeout而不是setInterval解决了问题


谢谢。

改用
$(document).keydown(function(){…})
.keypress
可能有问题,正如官方文档所述。

此代码令人困惑,为什么
clearInterval
知道
正在运行
?可能的修复方法是将
keypress
事件放在调用
setInterval
之后。因为它在循环$(文档)中,运行程序在keypress上是已知的,因为var是由kepress设置的,但我应该将它放在正确的下面。setTimout解决了这个问题。thanks@HagaiWild当您以创建
$(document).keypress(…)
的方式创建函数时,它将在调用函数时“查找”正在运行的
变量,而不是在创建函数时。
$(function(){



                var running = setTimeout(function (){ 
                alert('up');
                var varLISTID = document.getElementById('datacatch').getAttribute("data-variable-LISTID");  
                var varUSERACCOUNTNAME = document.getElementById('datacatch').getAttribute("data-variable-USERACCOUNTNAME");
                var mylink = "loadmessages.php?listID=" + varLISTID + "&useraccountname="+ varUSERACCOUNTNAME;
                $('#infobox1').load(mylink);
                   },20000);//10s


        $(document).keypress(function() {
                clearInterval(running); 
            })


    });