【问题标题】:Javascript: set Interval of a function in another php fileJavascript:在另一个 php 文件中设置函数的间隔
【发布时间】:2019-04-15 14:12:42
【问题描述】:
我有一个简单的 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);
});
感谢您的帮助和时间,戴夫
【问题讨论】:
标签:
javascript
php
setinterval
intervals
clearinterval
【解决方案1】:
您不能直接从 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 包含一个清除间隔的<script> 标记。由于该 HTML 不在此 $(document).ready() 函数的范围内运行,因此您需要将间隔分配给全局变量而不是局部变量。
第二种解决方案的设计很糟糕,因为它意味着使用它的所有页面都必须为此间隔函数使用相同的全局变量。