我仍然觉得很难掌握一些javascript / jquery概念。
我想找到一种在页面加载时加载ajax的方法,然后每隔10秒加载一次。我偶然发现http://www.erichynds.com/blog/a-recursive-settimeout-pattern这是一个好主意,因为它提供了一些错误检测来阻止脚本运行,如果ajax失败,只有问题是在页面加载时,它必须等待5秒才能请求数据,我希望它请求数据每10秒,以及页面加载,所以我不必等待10秒才能看到任何内容。
如何让它在页面加载后加载,每隔10秒就加载一次?
我尝试添加以下内容:
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();
然后我也尝试了这个,但是它要求两次数据,每个都可以理解一次。
poller.getData();
poller.init();
答案 0 :(得分:0)
将它放在文档就绪函数中,使用jquery在页面加载开始时将其触发,然后还有一个setTimeout函数,每隔10秒调用一次ajax调用。请参阅下面的示例。
$(document).ready(function() {
ajaxFunctionCall();
setTimeout( ajaxFunctionCall, 10000 );
});
答案 1 :(得分:0)
在加载时调用该函数,清除它并在函数
中添加settimeout
var tr=null;
$(function(){
tr=setTimeout(function(){timerFunction();},100);
});
function timerFunction(){
clearTimeout(tr);
//insert following after success
tr=setTimeout(function(){timerFunction();},10000);
}
&#13;