Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript:在另一个php文件中设置函数的间隔_Javascript_Php_Setinterval_Intervals_Clearinterval - Fatal编程技术网

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

Javascript:在另一个php文件中设置函数的间隔,javascript,php,setinterval,intervals,clearinterval,Javascript,Php,Setinterval,Intervals,Clearinterval,我有一个简单的javascript函数,它每秒运行meta_data.php文件。meta_data.php文件包含一个简单的数据库查询。如果数据库查询的返回是一个特定的值,我想停止meta_data.php文件的执行。因此,我的计划是简单地清除meta_data.php文件中函数check_data的间隔 是否可以从meta_data.php文件中设置函数“check_data”的间隔?如果是,我怎么做 <script> $(document).ready(function {

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

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

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

$(文档).ready(函数){
设置间隔(功能检查\数据(){
$('#p#u data_info')。加载('https://demo/includes/meta_data.php')
}, 1000);
});


感谢您的帮助和时间,Dave

您不能直接从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);
});
另一个解决方案是让
meta_data.php
返回的HTML包含一个
标记来清除间隔。由于该HTML不在该
$(document).ready()
函数的范围内运行,因此需要将间隔分配给全局变量,而不是局部变量

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

可能重复的