我有以下代码。间隔设置为10秒。
(function($){
$(document).ready(function() {
disp_log();
setInterval(function () {
disp_log();
}, 10 * 1000);
function disp_log() {
$.ajax({
"type" : "GET",
"url" : "/get_log/",
"dataType" : "json",
"cache" : false,
"success" : function(json) {
data=""
for(var j = 0; j < json.length; j++) {
data+="<tr><td>"+json[j]+"</td></tr>"
}
$("#log").html(data);
}
})(jQuery);
}
});
})(django.jQuery);
但不会发生令人耳目一新的事。有人可以告诉你为什么吗?
答案 0 :(得分:1)
使用如下。
setInterval(disp_log, 10 * 1000);
如果您的功能是全局的,那么将其用作
setInterval("disp_log()", 10 * 1000);
在ajax呼叫结束后你也不需要(jQuery)
。
更重要您拥有(function($){
和$(document).ready(function() {
。
你不需要它,因为两者都是一样的。
运行经过测试的代码
<script type="text/javascript">
$(document).ready(function()
{
disp_log();
setInterval(disp_log, 10 * 1000);
function disp_log()
{
$.ajax({
"type" : "GET",
"url" : "/get_log/",
"dataType" : "json",
"cache" : false,
"success" : function(json)
{
var data;
for(var j = 0; j < json.length; j++)
{
data+="<tr><td>"+json[j]+"</td></tr>"
}
$("#log").html(data);
}
});
}
});
</script>
答案 1 :(得分:1)
这里有一个错误:$.ajax
没有给你回复调用jQuery的东西。不需要(jQuery)
答案 2 :(得分:1)
你需要做的就是调试。首先,如果您正在获取任何代码,那么首先要解决这个问题。您可以使用....
来完成此操作"success" : function(json) {
console.log(json);
//or..
alert(json);
}
如果他们没有返回任何内容,那么你的AJAX请求就是问题,而不是你的setInterval代码。
但是在你的setInterval代码中,你应该知道ajax调用可能需要任何时间来加载,所以你不应该继续运行它。更好的方法是使用setTimeout ....
setTimeout(disp_log,10*1000);
然后,在您的成功函数中,再次输入相同的代码......
"success" : function(json) {
setTimeout(function() {
disp_log()
},10*1000);
}
这将确保您的代码在数据上次成功后10秒内保持运行。还有其他问题需要考虑(例如,如果ajax调用失败,如何保持脚本运行),但这样可以确保您最终不会与服务器请求失去同步!
答案 3 :(得分:0)
我在使用这个setInterval()
函数时遇到了问题,但后来我发现这是我的mozilla的问题。当我尝试在Chrome中运行时,它非常完美。