Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何修复JavaScript页面刷新_Javascript_Jquery_Refresh_Reload - Fatal编程技术网

如何修复JavaScript页面刷新

如何修复JavaScript页面刷新,javascript,jquery,refresh,reload,Javascript,Jquery,Refresh,Reload,我正在尝试使用jQuery进行稍微复杂的页面刷新。使用元刷新时,如果页面加载一次失败,则不会再次加载。我正在尝试做一些重复尝试加载的东西——如果加载一次失败,它将在下一次再次尝试,这样,如果最后一次加载成功,我将看到页面的新版本,无论是否存在中间错误 我目前的代码是: <script language="JavaScript" type="text/javascript" src="/include/jquery.js"> </script> <script lan

我正在尝试使用jQuery进行稍微复杂的页面刷新。使用元刷新时,如果页面加载一次失败,则不会再次加载。我正在尝试做一些重复尝试加载的东西——如果加载一次失败,它将在下一次再次尝试,这样,如果最后一次加载成功,我将看到页面的新版本,无论是否存在中间错误

我目前的代码是:

<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());
    }
});