Вы не можете остановить интервал напрямую из 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()
функции, вам необходимо назначить интервал для глобальной переменной, а не для локальной переменной.
Это второе решение плохого дизайна, поскольку оно означает, что все страницы, которые его используют, должны использовать одну и ту же глобальную переменную для этой функции интервала.