首页 > 解决方案 > Javascript:在另一个 php 文件中设置函数的间隔

问题描述

我有一个简单的 javascript 函数,它每秒运行 meta_data.php 文件。meta_data.php 文件包含一个简单的数据库查询。如果该数据库查询的返回是一个特定的值,我想停止执行 meta_data.php 文件。所以我的计划是简单的清除meta_data.php文件中函数check_data的Interval。

是否可以从 meta_data.php 文件中设置函数“check_data”的间隔?如果是,我该怎么做?

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

感谢您的帮助和时间,戴夫

标签: javascriptphpsetintervalintervalsclearinterval

解决方案


您不能直接从 PHP 停止间隔。它运行在服务器上,JS运行在客户端。

最好的方法是让 PHP 脚本返回 JSON 而不是 HTML。除了另一个属性中的 HTML 之外,JSON 还可以包含一个标志,说明间隔是否应该继续。然后 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);
});

另一种解决方案是让返回的 HTMLmeta_data.php包含一个<script>清除间隔的标记。由于该 HTML 不在此$(document).ready()函数的范围内运行,因此您需要将间隔分配给全局变量而不是局部变量。

第二个解决方案是一个糟糕的设计,因为它意味着使用它的所有页面都必须为此间隔函数使用相同的全局变量。


推荐阅读