如何修复JavaScript页面刷新
我正在尝试使用jQuery进行稍微复杂的页面刷新。使用元刷新时,如果页面加载一次失败,则不会再次加载。我正在尝试做一些重复尝试加载的东西——如果加载一次失败,它将在下一次再次尝试,这样,如果最后一次加载成功,我将看到页面的新版本,无论是否存在中间错误 我目前的代码是:如何修复JavaScript页面刷新,javascript,jquery,refresh,reload,Javascript,Jquery,Refresh,Reload,我正在尝试使用jQuery进行稍微复杂的页面刷新。使用元刷新时,如果页面加载一次失败,则不会再次加载。我正在尝试做一些重复尝试加载的东西——如果加载一次失败,它将在下一次再次尝试,这样,如果最后一次加载成功,我将看到页面的新版本,无论是否存在中间错误 我目前的代码是: <script language="JavaScript" type="text/javascript" src="/include/jquery.js"> </script> <script lan
<script language="JavaScript" type="text/javascript" src="/include/jquery.js">
</script>
<script language="JavaScript">
var delay=5*1000;
function load(){
setTimeout(load, delay);
jQuery("#content").load("calendar_internal.cgi?days=40", function(){
jQuery("#preload").hide("slow");
});
delay = 15*60*1000;
}
jQuery("#content").load("calendar_internal.cgi?days=40", load);
</script>
无功延时=5*1000;
函数加载(){
设置超时(加载、延迟);
jQuery(“#content”).load(“calendar#u internal.cgi?days=40”,函数(){
jQuery(“预加载”).hide(“慢”);
});
延时=15*60*1000;
}
jQuery(“#content”).load(“calendar#u internal.cgi?days=40”,load);
据我所知,这是一个秘密。它不会刷新
我怎样才能让它至少在一个基本的级别上工作,这样它就会刷新,但是一次不好的刷新并不意味着如果我想查看页面就必须重新加载
--编辑--
我现在所做的显然是有效的(经过光测试):
变量占位符=jQuery(“”);
函数加载(){
设置超时(负载,15*60*1000);
load(“logistic_ajax.cgi”,function()){
if(placeholder.html())
jQuery('#content').html(placeholder.html());
})
}
加载();
var$placeHolder=$('');
$placeHolder.load(您的URL,函数(){
如果($placeHolder.html()){
$(“#content”).html($placeHolder.html());
}
});
或者类似的。这样你就不会做所有或什么都不做的事情。如果HTML返回时出现问题,您可以检查“如果”状态。不确定回复的细节,所以您需要自己解决,或者让我知道更多细节
干杯。为什么在加载函数的第一行调用setTimeout中的加载函数?为了稳定性。我们的想法是,首先设置下一次运行,然后尝试网络负载,这样,如果网络负载失败,您不会损失超过一次尝试的负载。也许我没有看到这里的逻辑,但这不是一个无限递归调用吗?加载函数的第一行调用setTimeout,setTimeout调用加载函数,依此类推。第一个加载调用setTimeout并完成。第二次加载调用setTimeout并完成。第三次加载调用setTimeout并完成。它是无限递归,但堆栈上没有无限深度;我得到了一个空白页面,页面的骨架内容在加载区域之外。@JonathanHayward您可以在这里看到一个活动版本->查看源代码,并看到javascript声明,我相信它在/js/docs/js中。您正在执行的某些操作我不知道,例如服务器错误?选择器错误?很多事情都会出错。
<script language="JavaScript">
var placeholder = jQuery('<div></div>');
function load(){
setTimeout(load, 15*60*1000);
placeholder.load("logistic_ajax.cgi", function(){
if (placeholder.html())
jQuery('#content').html(placeholder.html());
})
}
load();
</script>
var $placeHolder = $('<div />');
$placeHolder.load(yourURL,function() {
if ($placeHolder.html()) {
$("#content").html($placeHolder.html());
}
});