我每60秒使用ajax显示一些数据库数据:
$(document).ready(function(){
function getData(){
$.ajax({
type: 'GET',
url: 'data.php',
success: function(data){
$('#output').html(data);
});
}
getData();
setInterval(function () { getData(); }, 60000); // it will refresh your data every 1 sec
});
data.php
文件的查询类似于:
$sql = "select * from orders where time > date_sub(now(), interval 1 minute) ORDER BY id DESC";
如何记录ajax检索的最后间隔并将其传递到查询中,以便它仅显示先前ajax结果+ 60秒之间的记录?
我担心如果某个地方有延迟,它可能会省略一些记录。
答案 0 :(得分:0)
首先设置一个参数,该参数用于通过get方法获取数据
$(document).ready(function(){
function getData(){
$.ajax({
type: 'GET',
url: 'data.php',
data:"req=req",
success: function(data){
$('#output').html(data);
});
}
getData();
setInterval(function () { getData(); }, 60000); // it will refresh your data every 1 sec
});
并将php设置为使用数组获取数据。
if ($_GET['req']){
$sql = "select * from orders where time > date_sub(now(), interval 1 minute) ORDER BY id DESC";
while ($row = mysqli_fetch_assoc($sql)){
$id = $row['id'];
echo $id;
}
}
答案 1 :(得分:0)
我最终以json格式将数据从php传递到ajax:
function getData() {
$.ajax({
type: 'GET',
url: 'data.php',
data: {lastID: lastID},
dataType: 'json',
success: function (data) {
lastID = data[0].id;
console.log(lastID);
$.each(data, function (i, item) {
var $tr = $('<tr class="page-break">').append(
$('<td>').text(item.id),
$('<td>').text(item.name),
$('<td>').text(item.details)
).appendTo('#output');
});
function isEmpty(el) {
return !$.trim(el.html());
}
if (!isEmpty($('#output'))) {
window.print();
}
}
});
}
在php中:
$lastID = $_GET['lastID'];
$sql = "select * from orders where id > ".$lastID." ORDER BY id DESC";