由于lastID
不起作用,我怎么只能在第一次使用值 0 初始化jquery中的var lastID = 0;
。
我在index.php中有这个ajax脚本
<script>
$(document).ready(function () {
var lastID = 0;
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>').append(
$('<td>').text(item.id),
$('<td>').text(item.name),
$('<td>').text(item.details)
).appendTo('#output');
});
}
});
}
getData();
setInterval(function () {
getData();
}, 10000); // it will refresh your data every 10 seconds
});
</script>
这是url: 'data.php'
:
$sql = "select * from oders where id > ".$lastID." ORDER BY id DESC";
...
echo json_encode($dataArray);
通过该查询,我得到0个结果,并且在控制台(console.log(lastID);
)中,我没有数据。
如果我这样更改查询:
$sql = "select * from oders where id > 0 ORDER BY id DESC";
在console.log(lastID);
中,我得到了正确的最后一个ID。在html中,我得到了正确的数据,并且每隔10秒钟就会不断添加相同的结果。
我不知道如何首次将lastID初始化为0(或数据库中的最后一个ID),并且每隔10秒刷新一次,就从ajax成功数据中获取最后一个ID。
答案 0 :(得分:0)
您的$lastID
变量来自何处,如何定义?
您似乎没有从$_GET
数组中获得正确的值。
要解决该问题和sql注入问题,您应该做的是切换到准备好的语句:
$sql = "select * from oders where id > ? ORDER BY id DESC";
并在执行查询之前/期间将$_GET['lastID']
绑定到占位符(取决于您使用的是mysqli还是PDO)。