Javascript:强制从服务器重装,怎么样?

时间:2010-01-10 00:48:19

标签: javascript

我今天刚刚找到一段代码,因为我需要刷新我的一个页面,以便PHP脚本可以再次运行以便每分钟都显示来自数据库的新结果。

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代码如何强制从服务器重新加载?

全部谢谢

2 个答案:

答案 0 :(得分:5)

如果页面上有图片,则代码段将尝试进行整页重新加载,否则只会将重定向发送到同一页面。

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

但是这个条件总是true,因为document.images是一个HTMLCollection,它永远不会评估为false,即使页面上没有图像,唯一的值也是在布尔表达式中评估为false的是nullundefined0NaN,空字符串,当然还有false。< / p>

如果您想使该条件有效,则应检查length的{​​{1}}属性,document.images属性为数字,这意味着它将评估为{{1} }仅当其值为length时:

false

另请注意,我现在使用函数表达式而不是字符串作为0的第一个参数,如果使用字符串,则代码将在运行时进行评估(相当于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 } 调用)和这并不是一个好的做法。

答案 1 :(得分:3)

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

这里有关于location.reload()方法http://www.devguru.com/Technologies/Ecmascript/Quickref/reload.html

的更多信息