Инициализируйте первые данные ajax с предустановленным значением, затем передайте его из ответа об успешном завершении

Как я могу инициализировать 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.

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
0
26
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Откуда взялась ваша переменная $lastID, как она определяется?

Похоже, вы не получаете правильное значение из массива $_GET.

Что вы должны сделать как для решения этой проблемы, так и для имеющейся у вас проблемы с внедрением sql, это переключиться на подготовленный оператор:

$sql = "select * from oders where id > ? ORDER BY id DESC";

И привяжите $_GET['lastID'] к заполнителю до / во время выполнения вашего запроса (в зависимости от того, используете ли вы mysqli или PDO).

Я считаю, что ты прав, спасибо. Забыл привязать $_GET['lastID']. Код предназначен только для разработки, поэтому не обращайте внимания на проблемы безопасности файла php. Еще одна вещь, после того как я добавил $_GET['lastID'], jquery больше не обновляется с помощью setInterval, почему бы так?

Victordb 20.07.2018 11:15

@Victordb Вы уверены? Возможно, новых рекордов нет. Вы должны проверить консоль javascript в браузере, чтобы узнать, что именно происходит.

jeroen 20.07.2018 11:17

Ах вы правы, новых рекордов не было. Извини тупой :)).

Victordb 20.07.2018 11:20

Другие вопросы по теме