javascript - 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);
});
感谢您的帮助和时间,戴夫
解决方案
您不能直接从 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()
函数的范围内运行,因此您需要将间隔分配给全局变量而不是局部变量。
第二个解决方案是一个糟糕的设计,因为它意味着使用它的所有页面都必须为此间隔函数使用相同的全局变量。
推荐阅读
- leaflet - 圆形标记 - 基于缩放值的大小传单
- assembly - 如何获取引导扇区中 nasm 汇编指令的大小?
- html - 跨越多列的文本
- python - python枚举函数获取索引错误
- python-3.x - 如何在熊猫数据框列中找到大于 1 的 value_counts() 长度
- email - 从付费帐户发送带有附件的电子邮件时,MailApp.sendEmail 无法正常工作
- r - 如何将变量从闪亮加载到全局环境?
- jquery - jQuery测验(多选,输入)
- mysql - 空闲后带有Node.js初始查询的Mysql需要很长时间才能执行后续查询是即时的
- javascript - 通过R中的串扰使用选择框在R plotly图中选择默认值,使用静态html不闪亮