我正在尝试通过ajax拉取mysql表的最新条目并将其显示为div内的html内容。我的ajax和php功能正常,唯一的问题是我想查询新条目并在循环内按时间间隔堆叠结果,我遇到了两个问题:让数据表现得像正常情况一样javascript 字符串,并使循环仅返回唯一的条目。
更新.php 文件
$con=mysqli_connect("mydbhost.com","username","password","database_name");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
$result = mysqli_query($con,"SELECT * FROM conversations");
$j = 0;
while($row = mysqli_fetch_array($result))
{
$carray[j] = $row['comment'];
$j++;
}
$comment = (array_pop($carray));
echo $comment;
echo "<br>";
mysqli_close($con);
JQuery Ajax 请求循环:
$(document).ready(function(e){
var comment;
function commentLoop() {
comment = $('#testdiv').load('update.php');
$('#testdiv').append(comment);
setTimeout(commentLoop, 6000);
}
commentLoop();
$(document).focus();
});
最佳答案
问题在于,通过执行SELECT * FROM communications
,您会不断请求整个表 - 尽管您只获取最后一个。
您的代码需要记住已加载的评论,并且仅获取比该评论更新的评论。
例如,假设您的主键是增量的,请执行SELECT * FROM communications WHERE convid > ?
。将 ?
替换为已加载的最新评论。如果您是第一次加载,只需执行SELECT * FROM对话
您可以将使用请求参数显示的最后一条评论 ID 传递到 update.php
中。另外我建议以 JSON 格式返回数据,这样您就可以返回评论和 id 的集合并轻松解析它
关于php - 如何通过JQuery/Ajax请求返回最新的Mysql条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15914152/