【问题标题】:Reload PHP page with data from mysql after interval间隔后使用 mysql 中的数据重新加载 PHP 页面
【发布时间】:2020-01-31 06:54:12
【问题描述】:

我有一个 php 页面,它从 mysql 中找到活动事件并循环遍历结果,然后打印详细信息。它找到事件名称、事件开始时间和加入的用户总数,但页面的数据只在用户重新打开页面时刷新,我想要的只是加入的用户列在一段时间后更新。

$result=fetchEventList();
if ($result->num_rows > 0) {

  while($row = $result->fetch_assoc()) {
  echo "<div class=\"row\">                                                                                                                                               
        <div class=\"td td1\">".$row["EventName"]."</div>                                                                                 
        <div class=\"td td2\">".$row["StartTime"]."</div>                                                                                                                                                                                                                                             
        <div class=\"td td3\">".$row["JoinedUsers"]."</div>";
}
}

我使用 javascript 搜索并找到了很多答案,只加载了一个 div,但它对我不起作用,我试过了

<script type = \"text/javascript\">                                                                                                                                         
setInterval(\"my_function();\", 5000);                                                                                                                                      
function my_function(){                                                                                                                                                     
$('.td3').load(location.href + ' #time');                                                                                                                               
}

但它不起作用,任何人都可以推动我的方向,我也不想再次刷新整个页面,只是所有事件的加入用户 div

【问题讨论】:

  • 这不是你调用命名回调的方式,这样写setInterval( my_function, 5000);,setInterval会在定时器完成后调用函数。
  • @darklightcode 我也试过了,但是当它刷新 div 时,它会变成空白

标签: javascript php mysql ajax


【解决方案1】:

你不能只“重新加载”一个 div。这是一个在 5 秒后为用户刷新页面的示例:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>Document</title>
</head>
<body>
  <script>
    setTimeout(function() {
      location.reload();
    }, 5000);
  </script>
</body>
</html>

要仅更新 div 上的内容(不刷新页面),您需要 AJAX 调用。

在 JQuery 中,您将使用$.get() 方法并使用$(divElem).html(result) 设置内容。

类似:

// Set interval will repeat at a specified time interval
// in this case, every 5 seconds
setInterval(function () {
  // Our AJAX call to get the updated PHP results
  $.get('yourPage.php', function(result) {
    // Put the results in the div
    $(yourDiv).html(result);
  });
}, 5000);

【讨论】:

    【解决方案2】:

    这与ajaxsetInterval 有关。首先加载数据并将其显示在 div 中。执行javascript调用ajax请求,根据iterval时间获取数据。

    然后将其显示到您的 div 中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-11
      • 1970-01-01
      • 2018-07-02
      • 2020-09-05
      • 1970-01-01
      • 1970-01-01
      • 2014-10-06
      相关资源
      最近更新 更多