Javascript:如何从服务器强制重新加载?
我今天刚刚找到了一段代码,因为我需要刷新我的一个页面,这样PHP脚本就可以每隔一分钟左右再次运行,以显示来自DB的新结果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
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在重新加载时根本不会更改。。。