Javascript: установить интервал функции в другом файле PHP - PullRequest
0 голосов
/ 12 ноября 2018

У меня есть простая функция javascript, которая запускает файл meta_data.php каждую секунду.Файл meta_data.php содержит простой запрос к базе данных.Если возвращением этого запроса к базе данных является конкретное значение, я хочу остановить выполнение файла meta_data.php.Поэтому я планирую просто очистить Интервал функции check_data в файле meta_data.php.

Можно ли установить интервал функции "check_data" из файла meta_data.php?Если да, как я могу это сделать?

<script>
$(document).ready(function {
    setInterval(function check_data () {
        $('#p_data_info').load('https://demo/includes/meta_data.php')
    }, 1000);
});

Спасибо за вашу помощь и время, Дейв

1 Ответ

0 голосов
/ 12 ноября 2018

Вы не можете остановить интервал напрямую из PHP. Он работает на сервере, JS работает на клиенте.

Лучшим способом было бы, чтобы PHP-скрипт возвращал JSON, а не HTML. JSON может содержать флаг, указывающий, должен ли интервал продолжаться или нет, в дополнение к HTML в другом свойстве. Затем JavaScript проверяет флаг и отменяет интервал.

$(document).ready(function {
    var interval = setInterval(function check_data () {
        $.getJSON('https://demo/includes/meta_data.php', function(data) {
            if (data.stop) {
                clearInterval(interval);
            }
            $('#p_data_info').html(data.html);
        });
    }, 1000);
});

Другое решение было бы для HTML, который возвращается meta_data.php, включать тег <script>, который очищает интервал. Так как этот HTML не работает в области действия этой $(document).ready() функции, вам необходимо назначить интервал для глобальной переменной, а не для локальной переменной.

Это второе решение плохого дизайна, поскольку оно означает, что все страницы, которые его используют, должны использовать одну и ту же глобальную переменную для этой функции интервала.

...