Javascript 在页面加载时运行ajax,然后每5秒运行一次
我仍然发现很难掌握一些javascript/jquery概念 我想找到一种在页面加载时加载ajax的方法,然后每隔10秒加载一次。我偶然发现了一个好主意,因为它提供了一些错误检测以在ajax失败时停止脚本运行,唯一的问题是在页面加载时,它必须等待5秒才能请求数据,我希望它每10秒请求一次数据,以及在页面加载时,所以我不必等待10秒才能看到任何内容 我如何让它在页面加载时加载,以及之后每隔10秒加载一次 我尝试添加以下内容:Javascript 在页面加载时运行ajax,然后每5秒运行一次,javascript,jquery,ajax,Javascript,Jquery,Ajax,我仍然发现很难掌握一些javascript/jquery概念 我想找到一种在页面加载时加载ajax的方法,然后每隔10秒加载一次。我偶然发现了一个好主意,因为它提供了一些错误检测以在ajax失败时停止脚本运行,唯一的问题是在页面加载时,它必须等待5秒才能请求数据,我希望它每10秒请求一次数据,以及在页面加载时,所以我不必等待10秒才能看到任何内容 我如何让它在页面加载时加载,以及之后每隔10秒加载一次 我尝试添加以下内容: if(this.success_count&&th
if(this.success_count&&this.failed == 0)
{
jQuery.proxy(this.getData, this)
}else{
setTimeout(
jQuery.proxy(this.getData, this),
this.interval
);
}
为此:
var poller = {
failed: 0,
success_count: 0,
interval: 10000,
init: function(){
if(this.success_count&&this.failed == 0)
{
jQuery.proxy(this.getData, this)
}else{
setTimeout(
jQuery.proxy(this.getData, this),
this.interval
);
}
},
getData: function(){
var self = this;
jQuery.ajax({
url : "foo.htm",
success : jQuery.proxy(self.successHandler, self),
error : jQuery.proxy(self.errorHandler, self)
});
},
// => Handle Success
successHandler : function( response ){
if( response === "failure" ){
this.errorHandler();
} else {
++this.success_count;
this.init();
}
},
errorHandler: function(){
if( ++this.failed < 5 ){
this.interval += 1000;
this.init();
}
}
};
poller.init();
使用jquery将其放在一个文档就绪函数中,在页面加载开始时启动它,然后还有一个setTimeout函数,该函数每10秒调用一次ajax调用。请参见下面的示例
$(document).ready(function() {
ajaxFunctionCall();
setTimeout( ajaxFunctionCall, 10000 );
});
在加载时调用函数,清除它并在函数中添加settimeout var tr=null; $function{ tr=setTimeoutfunction{timerFunction;},100; }; 函数时间函数{ 限时器; //成功后插入以下内容 tr=setTimeoutfunction{timerFunction;},10000; }
Init应该是第一个,我想为什么不在启动setTimeout之前在Init中调用getData呢?Antoine,我尝试添加getData,this.getData;在超时之前的一开始,它仍然不起作用。您能解释一下init函数中if语句的意义吗?还有,它怎么不起作用?你收到错误消息了吗?您在哪里尝试调用getData?嗨,Keith,这是我最初考虑的方式,但在阅读了该链接后,您提供的代码显然意味着如果加载ajax时出现错误,上面的代码将忽略它,并继续尝试加载死页。链接上的代码意味着您可以停止处理错误并显示自定义失败消息。这是我的理解,我没有误解
$(document).ready(function() {
ajaxFunctionCall();
setTimeout( ajaxFunctionCall, 10000 );
});