Как я могу инициализировать lastID в jquery только в первый раз со значением 0, потому что var lastID = 0; не работает.
У меня есть этот скрипт ajax в index.php
<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.info(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.info(lastID);) у меня нет данных.
Если я изменю запрос следующим образом:
$sql = "select * from oders where id > 0 ORDER BY id DESC";
В console.info(lastID); я получаю правильный последний идентификатор. И в html я получаю правильные данные, и каждые 10 секунд он снова и снова добавляет одни и те же результаты.
Я не могу понять, как инициализировать lastID в первый раз как 0 (или последний идентификатор в базе данных), а при обновлении каждые 10 секунд брать последний идентификатор из данных успеха ajax.






Откуда взялась ваша переменная $lastID, как она определяется?
Похоже, вы не получаете правильное значение из массива $_GET.
Что вы должны сделать как для решения этой проблемы, так и для имеющейся у вас проблемы с внедрением sql, это переключиться на подготовленный оператор:
$sql = "select * from oders where id > ? ORDER BY id DESC";
И привяжите $_GET['lastID'] к заполнителю до / во время выполнения вашего запроса (в зависимости от того, используете ли вы mysqli или PDO).
@Victordb Вы уверены? Возможно, новых рекордов нет. Вы должны проверить консоль javascript в браузере, чтобы узнать, что именно происходит.
Ах вы правы, новых рекордов не было. Извини тупой :)).
Я считаю, что ты прав, спасибо. Забыл привязать
$_GET['lastID']. Код предназначен только для разработки, поэтому не обращайте внимания на проблемы безопасности файла php. Еще одна вещь, после того как я добавил$_GET['lastID'], jquery больше не обновляется с помощьюsetInterval, почему бы так?