我有一个网页,不断使用$ .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/