Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/383.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 - Fatal编程技术网

Javascript:如何从服务器强制重新加载?

Javascript:如何从服务器强制重新加载?,javascript,Javascript,我今天刚刚找到了一段代码,因为我需要刷新我的一个页面,这样PHP脚本就可以每隔一分钟左右再次运行,以显示来自DB的新结果 if (document.images) setTimeout('location.reload(true)',1000*60*15); // forces a reload from the server else setTimeout('location.href = location.href',1000*60*15); // just reloads

我今天刚刚找到了一段代码,因为我需要刷新我的一个页面,这样PHP脚本就可以每隔一分钟左右再次运行,以显示来自DB的新结果

if (document.images)
    setTimeout('location.reload(true)',1000*60*15); // forces a reload from the server
else
    setTimeout('location.href = location.href',1000*60*15);  // just reloads the page
这两者有什么区别?我的意思是他们不重新加载页面吗?JS代码如何强制从服务器重新加载


谢谢大家

我认为location.reload(true)将强制从服务器重新加载页面,第二个示例将重新加载页面,但如果它存在,它将访问浏览器缓存(可能确实存在)

这里有更多关于location.reload()方法的内容,如果页面上有图像,代码片段将尝试重新加载整个页面,否则它只会重定向到同一页面本身

使用
location.reload(true)
,参数
true
会导致页面始终从服务器重新加载

但该条件始终是
true
,因为它是一个HTMLCollection,并且它永远不会计算为
false
,即使页面上没有图像,在布尔表达式中计算为
false
的唯一值是
null
undefined
0
NaN
,一个空字符串,当然还有
false

如果要使该条件生效,应检查
document.images
length
属性,
length
属性为数字,这意味着只有当其值为
0
时,它才会计算为
false

if (document.images.length) {
    setTimeout(function () {
        location.reload(true); // forces a reload from the server
    }, 1000*60*15); 
} else {
    setTimeout(function () {
        location.href = location.href;
    }, 1000*60*15);  // just reloads the page
}

还要注意,我现在使用函数表达式而不是字符串作为
setTimeout
的第一个参数,如果使用字符串,代码将在运行时进行计算(相当于
eval
调用),这并不是一个好的做法。

Wow-谢谢!它现在非常清晰,如果不测试图像长度,我可能会失败!再次感谢。:)只是一个简单的问题-如果我的页面中有变量怎么办?我可以把这个也传下去吗?或者我必须使用href one吗?是的,我正要告诉你,GET变量将被保留,因为当前URL在重新加载时根本不会更改。。。