You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

数据库值为1时index.php页面无法自动刷新问题求助

问题描述

我想要实现一个系统,当数据库tickets_update表的condicao字段值为1时,自动刷新index.php页面。目前所有PHP代码功能正常,但index.php页面无法触发自动刷新。

现有代码

index.php

<script>
  inverval_timer = setInterval(function update() { 
    $.get("base_de_dados/update/loadMensagens.php", function(data) {
      $("#numseiCategoria").html(data);
      window.setTimeout(update);
    })
  }, 5000);
</script>

loadMensagens.php

<?php
include_once '../bdados.php';
$fila = $conn->query("SELECT * FROM tickets_update");

while($Filas = $fila->fetch_assoc()){
  $condicao = $Filas['condicao'];
}

if($condicao == 1){
  $condicao = 0;
  $queryAtualizar = $conn->query("UPDATE tickets_update SET condicao='$condicao'");
  echo "
  <div id='a'></div>
  <script>
    $.ajax({url:'updateMensagens.php', success:function(result){
      $('#a').html(result)
    }});
  </script>";
}

?>

updateMensagens.php

<script>
    $(document).ready(function(){
        location.reload();
    });
</script>

问题原因

  1. 脚本执行上下文异常:loadMensagens.php返回的JS代码发起AJAX请求获取updateMensagens.php,再将返回的刷新脚本插入页面。这种嵌套的脚本插入方式会导致location.reload()的执行时机和上下文出错,无法正确触发页面刷新。
  2. 定时器重复调用:setInterval已经设置了5秒循环执行,又在回调里调用window.setTimeout(update),会导致定时器叠加,引发逻辑混乱。

修复方案

简化流程,直接在index.php的AJAX回调中根据返回值判断是否刷新页面,无需嵌套AJAX和脚本插入:

修改后的loadMensagens.php

<?php
include_once '../bdados.php';
$fila = $conn->query("SELECT * FROM tickets_update");
$condicao = 0;
while($Filas = $fila->fetch_assoc()){
  $condicao = $Filas['condicao'];
}

if($condicao == 1){
  $condicao = 0;
  $queryAtualizar = $conn->query("UPDATE tickets_update SET condicao='$condicao'");
  // 返回需要刷新的标识
  echo "need_refresh";
} else {
  // 返回原本需要更新的内容(无内容则返回空)
  echo "";
}
?>

修改后的index.php

<script>
  // 仅保留一个setInterval定时器
  setInterval(function() { 
    $.get("base_de_dados/update/loadMensagens.php", function(data) {
      $("#numseiCategoria").html(data);
      // 判断返回值是否为刷新标识
      if (data.trim() === "need_refresh") {
        location.reload();
      }
    })
  }, 5000);
</script>

说明

  • 移除冗余的setTimeout调用,避免定时器叠加问题。
  • loadMensagens.php不再返回嵌套的HTML和JS,直接返回简单标识字符串,逻辑更清晰。
  • 在index.php的AJAX回调中直接判断标识,触发页面刷新,执行上下文正确,能确保刷新生效。

内容的提问来源于stack exchange,提问作者Volttzz Beats

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 20:35:29