Javascript 平滑刷新显示来自不断更新的MySQL列的数据的html页面
为了更加清晰,我在这里打开了一个新的线程,因为我们解决了第一个问题,多亏了你们:) 我们有一个人工智能,它不断地编写文本并将其推送到MySQL bdd中。我们希望将此文本显示为一个无限的在线发布内容。我们希望看到它在书写,比如当你在屏幕上书写文本时,我们尝试了以下方法:Javascript 平滑刷新显示来自不断更新的MySQL列的数据的html页面,javascript,php,mysql,ajax,Javascript,Php,Mysql,Ajax,为了更加清晰,我在这里打开了一个新的线程,因为我们解决了第一个问题,多亏了你们:) 我们有一个人工智能,它不断地编写文本并将其推送到MySQL bdd中。我们希望将此文本显示为一个无限的在线发布内容。我们希望看到它在书写,比如当你在屏幕上书写文本时,我们尝试了以下方法: <!DOCTYPE html> <head> <script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/li
<!DOCTYPE html>
<head>
<script type = "text/javascript" src = "https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
</head>
<body>
<div id="myTable"></div>
<script type="text/javascript">
function page_refresh() {
$.ajax({
url : 'getData.php',
type : 'GET',
success : function(data) {
$('#myTable').html(data);
},
error : function(request,error)
{
alert("Request error : "+JSON.stringify(request));
}
});
}
var period = 100; //NOTE: period is passed in milliseconds
setInterval(page_refresh, period);
</script>
</body>
似乎不能很好地处理如此低的计时,它看起来只是用我们拥有的测试数据刷新了整个页面。另外,由于某些原因,页面在显示数据之前会保持空白几秒钟。有没有更有趣的方法 正如我在评论中所说的,100毫秒对于您的数据库获取Web服务的数据以及Web服务将数据转发到您的前端来说都是行不通的。只有当您使用的数据量较低,并且您的webservice服务器位于数据库服务器的同一台机器上(或靠近该机器)时,此功能才能正常工作 现在,请看“更有趣的方法”
您可以每隔100毫秒获取所需的数据,没有问题,但您不能立即尝试显示它(我已经在评论中解释了原因)。相反,构建一个队列和一个函数来显示它的第一个元素。当函数返回时,是时候从队列中弹出第一个元素并显示下一个元素了。通过这种方式,您可以确保文本始终按照插入顺序正确显示。正如我在评论中所说,100毫秒对于您的数据库获取Web服务的数据以及Web服务将数据转发到前端来说都是不够的。只有当您使用的数据量较低,并且您的webservice服务器位于数据库服务器的同一台机器上(或靠近该机器)时,此功能才能正常工作 现在,请看“更有趣的方法”
您可以每隔100毫秒获取所需的数据,没有问题,但您不能立即尝试显示它(我已经在评论中解释了原因)。相反,构建一个队列和一个函数来显示它的第一个元素。当函数返回时,是时候从队列中弹出第一个元素并显示下一个元素了。通过这种方式,您可以确保文本始终按照插入顺序正确显示。您是否知道如何使用WebSocket?创建此技术是为了取代定期轮询服务器以获取更新。服务器可以将更改推送到客户端,而不是从客户端进行轮询。你可以阅读更多关于它的信息你有使用WebSocket的知识吗?创建此技术是为了取代定期轮询服务器以获取更新。服务器可以将更改推送到客户端,而不是从客户端进行轮询。您可以阅读更多关于它的信息短篇故事是制作一个websocket,通过websocket将文本从后端流到前端,并使用Javascript更新html中的文本。你不想用页面刷新来重新渲染,因为根据你的解释,这似乎不是你想要的。你知道一首好的芭蕾舞曲,我可以从中改进和改进它吗?你的间歇期需要更高。除非您处理的数据量很小,并且您的webservice服务器与数据库服务器运行在同一台机器上,否则100ms不会减少。要么它将获取大量内容并同时尝试显示它们,要么它将破坏您的页面布局并返回大量超时/空响应。您的AI无法写入数据库,只能写入websocket,完成后写入数据库。请使用ratchet。简短的故事是制作一个websocket,通过websocket将文本从后端流到前端,并使用Javascript更新html中的文本。你不想用页面刷新来重新渲染,因为根据你的解释,这似乎不是你想要的。你知道一首好的芭蕾舞曲,我可以从中改进和改进它吗?你的间歇期需要更高。除非您处理的数据量很小,并且您的webservice服务器与数据库服务器运行在同一台机器上,否则100ms不会减少。要么它将获取大量内容并同时尝试显示它们,要么它将破坏您的页面布局并返回大量超时/空响应。您的AI无法写入数据库,只能写入websocket,完成后写入数据库。请使用ratchet。Web服务器和BDD位于同一台计算机上。我们将根据你的建议努力做点什么。谢谢Web服务器和BDD位于同一台计算机上。我们将根据你的建议努力做点什么。谢谢绝对不是,我在寻找朋友的帮助,我在谷歌上搜索教程绝对不是,我在寻找朋友的帮助,我在谷歌上搜索教程
<?php
$dbhandle = new PDO("mysql:host=localhost;dbname=writing", "root", "*********");//this connects to your mysql table
$sql = "SELECT text, id, date FROM table_02 ;"; //thise is your query, where you select what data you want from the table
$query = $dbhandle->prepare($sql);
if ($query->execute() == FALSE)
{ die("Query error: " . implode($query->errorInfo(), ' ')); } //this is a measure to close the connection if there is an error
echo('<table>');
echo('<tr><th>Test</th></tr>');
while ($row = $query->fetch()) {
echo('<tr>');
##echo('<td>'.$row ['id'].'</td>');
##echo('<td>'.$row ['date'].'</td>');
echo('<td>'.$row ['text'].'</td>');
echo('</tr>');
}
echo('</table>');
?>
var period = 100; //NOTE: period is passed in milliseconds
setInterval(page_refresh, period);