Перезапустите Ajax с данными из собственного ответа - PullRequest
0 голосов
/ 28 августа 2018

Можно ли вставить в пост ajax какую-то измененную переменную из собственных данных успеха?

При загрузке страницы сначала запускается ajax и показывает некоторые записи из mysql, затем я беру идентификатор последней записи и сохраняю его в latestID, в следующую секунду ajax запускает и извлекает только записи из этого идентификатора вперед, а затем сохраняет lastId и запускает еще раз.

   $.ajax({
        type: 'POST',
        url: '{{ ... }}',
        dataType: 'json',
        'success': function (data) {
            callback(data);
        }
    });
    function callback(response) {
        var idList = [];
        var printer_category = response.printer.productcategory_id;
        var printer_timer = parseInt(response.printer.timer);
        var printer_storeid = response.printer.store_id;
        var printer_physicalPrint = parseInt(response.printer.physical_print);
        var printer_id = parseInt(response.printer.id);
        var data = response.transactions;
        console.log(response);
        $.each(data, function (i, dataitem) {
            console.log(dataitem);
            idList.push(dataitem.id);
        });
        var latestID = Math.max.apply(Math, idList);


        function getData() {
            $.ajax({
                type: 'POST',
                url: '{{ ... }}',
                dataType: 'json',
                data: {latestID: latestID, printer_timer: printer_timer, printer_storeid: printer_storeid, printer_category: printer_category},
                success: function (data) {
                    console.log(data);
                    data = data.transactions;
                    if (data != 0) {
                        var idList = [];
                        $.each(data, function (i, dataitem) {
                            console.log(dataitem);
                            idList.push(dataitem.id);
                        });
                        var latestID = Math.max.apply(Math, idList);
                        console.log(latestID);
                    }
                }
            });
        }

        getData();
        setInterval(function () {
            getData();
        }, 10000); 

   }

});

Если я console.log(latestID) внутри success: function, он показывает правильное значение, но ajax отправляет data: {latestID: latestID}, значение 1 на каждом setInterval запуске.

* РЕДАКТИРОВАТЬ: добавлен весь код.

1 Ответ

0 голосов
/ 28 августа 2018

вместо var latestID = Math.max.apply(Math, idList);

используйте latestID = Math.max.apply(Math, idList); в случае успешного обратного вызова.

с использованием var до объявления переменной уровня метода, переопределяющей значение глобальной переменной. Поскольку вы хотите продолжать использовать последний идентификатор, вам нужна глобальная переменная.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...