好的,我在过去的4到5个小时里一直环顾Stack和其他地方,试图找到问题的解决方案。
我在页面内部有一个包含5行信息的iframe,信息是从数据库中获取的。所述信息将不断变化,因此需要每1-5秒刷新一次,如果需要可以延长到10秒。
我使用了以下代码,但是由于某些原因我的浏览器崩溃了,我猜测重新加载太快了?
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.0/jquery.min.js"></script>
<script type="text/javascript">
var auto_refresh = setInterval(
function ()
{
$('#info').load('mid.php');
}, 5000); // refresh every 5000 milliseconds
</script>
以下是mid.php中的代码(页面内部有PHP,但这是我需要刷新的部分)。
<div id="info"><font size="2">
<b>Crimes: </b><font color="white"><?php if ($fetch->lastcrime <= time()){ echo 'Ready'; }else{ echo "".maketime($fetch->lastcrime).""; } ?></font><br>
<b>GTA: </b><font color="white"><?php if ($fetch->lastgta <= time()){ echo 'Ready'; }else{ echo "".maketime($fetch->lastgta).""; } ?></font><br>
<b>Chase: </b><font color="white"><?php if ($fetch->last_chase < time()){ echo 'Ready'; }else{ echo "".maketime($fetch->last_chase).""; } ?></font><br>
<b>Extortion: </b><font color="white"><?php if ($fetch->last_ext < time()){ echo 'Ready'; }else{ echo "".maketime($fetch->last_ext).""; } ?></font><br>
<b>Rank:</b><?php echo "$fetch->rank"; ?></td></tr>
</div>
</table>
我知道我可以使用HTML来刷新Iframe,但是当屏幕的整个左上角每3秒刷新一次时它看起来很难看,非常感谢任何帮助。
由于
答案 0 :(得分:1)
我希望您使用Ajax调用此类事情。你可以通过冰点jQuery来更新元素的内容,以避免刷新你的iframe。 iframe的功能有限,仅仅用于更新网页内容通常没有意义。
浏览器崩溃可能来自使用set internal。如果完成呼叫的时间超过5秒,则可能会堆叠多个呼叫。但对于你的情况,我觉得这不是问题,因为它应该能够快速更新橙色。无论如何,更好的方法是在每次运行完成后为每次执行更新过程设置一个计时器。这样,如果通话时间过长,您就不会继续堆叠请求。
答案 1 :(得分:1)
使用可以使用.load()
回调,将setTimeout()
替换为setInterval
$(document).ready(function() {
let timeout;
let duration = 5000;
let stop = false;
function update() {
$("#info").load("mid.php", function() {
if (timeout) {
clearTimeout(timeout)
}
if (stop === false) {
timeout = setTimeout(update, duration)
}
});
}
update();
});
答案 2 :(得分:-1)
感谢。
我最终使用了几乎相同的脚本,只是将PHP和HTML拆分为单独的文件并从HTML文件中调用div。