在我的应用程序中,我每秒轮询webserver的消息并在前端显示它们。 我使用setInterval来实现这一点。但是,只要用户停留在该页面上,即使没有数据,客户端也会继续使用请求轮询服务器。当通过设置变量不再生成更多消息时,服务器会发出提示。 我想用这个变量clearInterval并停止计时器,但没有奏效。在这种情况下我还能使用什么? 我正在使用jquery和django。这里是我的代码:setInterval替代
jquery: var refresh = setInterval( function() { var toLoad = '/myMonitor'+' #content'; $('#content').load(toLoad).show(); }, 1000); // refresh every 1000 milliseconds }); html: div id=content is here
我可以访问django变量在html中完成每个刷新。我如何设置clearInterval?
注:堆栈溢出不会让我把为& GT & LT这样的HTML是不完整的
感谢
更新2010年3月16日 我必须做一些错误的。但无法弄清楚。这是我与clearTimer的脚本,它不起作用。
var timer = null; $(function(){ if ("{{status}}" == "False") { clearInterval(timer); } else { timer = setInterval( function(){ var toLoad = '/myMonitor'+' #content'; $('#content').load(toLoad).show();} ,1000); // refresh every 1000 milliseconds } });
status是一个在“views.py”(Django)中设置的布尔值。 谢谢你一堆。
您可能会考虑研究Django和jQuery Comet实现以获得更好的服务器轮询。 http://www.rkblog.rk.edu.pl/w/p/django-and-comet/ - http://plugins.jquery.com/project/Comet – 2010-03-15 17:01:02
什么“没有工作”清除间隔计时器?这对我来说总是有效的。也许你做这件事的方式有点不对。 – Pointy 2010-03-15 17:12:18
谢谢你们,我会看看Comet的实现。 尖尖的, 我正在访问Django模板中的变量{{result}}。我试着用“if”和“while”循环在Jquery中检查这一点,并清除间隔,但这不起作用。我很可能做错了。请你能指点一下我应该把支票放在哪里或怎么放? 谢谢 – spyder 2010-03-15 17:30:11