Jquery自动刷新div

时间:2010-06-20 18:20:59

标签: memory-leaks jquery refresh

Jquery自动刷新耗尽了很多浏览器内存。有办法阻止这个。我每隔3秒刷一次2 div,但我把它移动到9和15秒,它帮助我的网站上的窗口保持打开的时间越长,浏览器崩溃之前所需的内存就越多。

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js" ></script>


<script>
var auto_refresh = setInterval(
function ()
{
$('#details2').load('links2.php').fadeIn("slow");
}, 15000); // refresh every 10000 milliseconds</script>

3 个答案:

答案 0 :(得分:2)

您可以尝试跳过load()并使用$ .ajax。我知道load();是一个ajax请求,但我似乎记得它取了整个脚本。尝试请求脚本,进行数据库计算并将数据作为json返回。我假设您正在使用数据库请求中的数据发送完整的html。试着用json代替。

您将获取数据作为对象,例如。

{"variable":"foo"}

然后你可以用简单的每个语句来获取数据。

$.ajax({
    url: "links2.php",
    type: "POST",
    dataType: "json",
    success: function(data){

       // data here is returned as objects since it's json
       $.each(data, function(key, value) {
            $("#details2").empty().append(value.variable);
       }); 

    }
});

我认为这不应该泄露您的记忆并最终导致您的浏览器崩溃,即使您每隔一秒左右调用一次。试一试,让我知道它是怎么回事。

祝你好运!

答案 1 :(得分:0)

尝试将其更改为:

// ...
$('#details2').empty().load('links2.php').fadeIn('slow');

它可能会停止显式告诉jQuery首先清空容器,因此它可以释放任何事件处理程序等。(虽然不清楚那里会有任何处理程序......)

编辑 - 实际上没关系;我检查了jQuery源代码,它看起来像调用.html()load()确实如此,我很确定)似乎总是首先调用empty()

答案 2 :(得分:0)

虽然答案已获批准,但我应该告诉你。我遇到了同样的问题。

我在jQuery文件的src中发现了问题。我使用JQuery网站网址作为我的来源,并且它将我的计算机使用率提高到99%。但后来我下载了整个JQuery脚本并将其保存在我的网站目录中,我在我的源代码中使用了它,然后计算机使用或内存没有问题。试试吧..