我非常困惑我如何使用AJAX可以重新加载使用PHP在我的数据库上执行SQL查询的网页的一部分。这是我的例子
<tbody>
<?php
$stmt = $DB_con->prepare("SELECT * FROM script_data WHERE email = :email OR username = :uname");
$stmt->execute(array(':uname'=>$_SESSION['username'], ':email' => $_SESSION['email']));
$count = $stmt->rowCount();
while($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
echo '<tr>';
echo '<td>' . $row['script_ID'] . '</td>';
echo '<td>' . gmdate("H:i:s", $row['runtime']) . '</td>';
echo '<td>' . $row['status'] . '</td>';
echo '<td>' . $row['script_name'] . '</td>';
echo '<td>' . $row['script_version'] . '</td>';
echo '</tr>';
}
if($count == 0) {
$bot_is_running = false;
echo '<tr>';
echo '<td>No active Bots</td>';
echo '</tr>';
}
?>
</tbody>
这只是从数据库获取信息并将其作为表格呈现我的问题是它需要每5秒左右刷新一次以获取最新数据(我的数据库不断更新来自java应用程序)
关于如何做到这一点的任何想法?
答案 0 :(得分:1)
据推测,此页面内容位于可以某种方式请求的页面上?为了举个例子,我们称之为myPage.php
。您可以在jQuery中使用the .load()
function从服务器获取页面并将其内容放在元素中。例如:
$('tbody').load('myPage.php tbody tr');
这将使用从请求的页面返回的tbody
元素替换当前页面中tr
的内容。
为了做到这一点&#34;每5秒钟&#34;你使用setInterval()
之类的东西。例如:
setInterval(function () {
$('tbody').load('myPage.php tbody tr');
}, 5000);
注意:从服务器获取页面内容并不是最快的方式,所以如果您要重新加载很多(每隔几秒钟)那么你可能会加快速度。创建一个单独的PHP页面,它只返回更新的数据而不是完全呈现的页面。然后使用.load()
代替.get()
从该页面获取JSON数据并更新您已有的客户端标记。
根据您正在使用的技术,有许多方法可以执行此操作。获取整个页面应工作,但我建议你研究一种更有条理的方式,即使只是作为一种学习体验。