jQuery自动刷新div

7
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>

你使用了哪个插件/代码来完成这个任务? - Matt
2
你能贴出相关的一些代码吗? - Pointy
<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 () { $('#details').load('links5_2.php').fadeIn("slow"); }, 9000);</script> - John Sims
加载的内容中有什么?特别是任何脚本吗? - Pointy
是的,它正在调用运行 SQL 查询的页面。 - John Sims
3个回答

2

您可以尝试跳过load(),改用$.ajax。我知道load()是一个ajax请求,但我记得它会获取整个脚本。尝试请求一个脚本,进行数据库计算并将数据作为JSON返回。我假设您正在发送包含来自数据库请求的完整HTML数据。请改用JSON尝试。

您将会得到一个对象形式的数据,例如:

{"variable":"foo"}

然后,您可以使用简单的 each 语句获取数据。
$.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);
       }); 

    }
});

我认为即使您每隔一秒钟调用它一次,这也不应该泄漏您的内存并最终导致浏览器崩溃。试试看,然后告诉我结果如何。

祝好运!


0

请试着改成这样:

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

可能需要明确告诉jQuery首先清空容器,以便释放任何事件处理程序等(尽管不清楚是否有任何处理程序在其中...)

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


0

虽然已经有一个答案被批准了,但我还是要告诉你,我曾经遇到过同样的问题。

我在 JQuery 文件的源代码中找到了问题。我使用了 JQuery 网站的 URL 作为我的源代码,结果导致我的电脑使用率达到了 99%。但后来我下载了整个 JQuery 脚本并将其保存在我的网站目录中,我使用它作为我的源代码,然后电脑使用率和内存都没有问题了。你也可以试试这个方法。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接