我有一个网页,不断使用$ .getJSON调用php页面来获取一些信息。我正在循环使用javascript setTimeOut。它运行正常,但运行时内存使用量会增加。

我已经读过一些地方,在创建动态DOM元素时必须要小心,并确保完全删除它们,以避免IE和Firefox中的内存泄漏,但在此测试页中我什至没有这样做。 (我待会儿)

我的最终目标是拥有一个Web应用程序,以从其他服务器端应用程序或其他事件更新数据库上的用户页面。因此,我的想法是让一个javascript不断调用php脚本,如果db看起来有变化,则该php脚本返回数据库上的文件时间,以获取数据库信息。

这是我的代码:

<!doctype html>
<html lang="en">
    <head>
        <title>Test For Mem Leaks</title>
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4/jquery.min.js"></script>
        <script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8/jquery-ui.min.js"></script>
        <script>
            function init(){
                setTimeout("call()",250);
            }

            function call(){
                var p = "test";
                var f = "returnDBTime";
                var a = name;
                    $.getJSON ('gateway/gateway.php', { p:p, f:f ,a:a  }, function (rere) {
                    setTimeout("call()",250);
                });
            }
       </script>
    </head>
<body>
</body>
</html>
<script type="text/javascript">
    init();
</script>

最佳答案

您可以使用setTimeout代替setInterval,而不是在回调中再次设置它
而且您没有在此处创建任何DOM节点,因此您不应有任何内存泄漏。请详细说明您的ajax回调函数,因为此代码似乎可以正常工作。

关于javascript - Javascript:jQuery getJSON似乎在循环中泄漏内存,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5379775/

10-11 12:48
查看更多