Javascript: 在另一个 php 文件中设置函数的间隔

Javascript: set Interval of a function in another php file

我有一个简单的 javascript 函数,每秒运行 meta_data.php 文件。 meta_data.php 文件包含一个简单的数据库查询。如果该数据库查询的 return 是一个特定值,我想停止执行 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);
});

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

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

最好的方法是 PHP 脚本到 return 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);
});

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

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