php - javascript onload 重置时间戳循环问题

标签 php javascript jquery html ajax

我通常使用 VBA 和 MySQL 进行开发,但我的任务是创建一个实时仪表板,并将其显示在我办公室周围的屏幕上。为此,我使用 PHP 和 javascript。仪表板包含两个主要部分,一个通过谷歌分析 API 调用网站流量数据,另一个从我们的内部数据库调用销售数据。

我在单独的模块中用 PHP 编写了单独的一半,我使用下面的代码从仪表板网页调用这些模块,使用循环每十秒独立刷新每个模块。问题是我想在屏幕上包含两个计时器,从上次加载每个模块开始以秒为单位向上计数,我使用以下代码尝试使用当前时间重置变量以促进此操作当每个文档加载时。

var sales_string_unix = 0;
var sales_string_google = 0;

setInterval(function(){

    $(document).ready(function() {
        $('#google_data').load('fetch_google_data.php');
        sales_string_unix = new Date().getTime();   
    });

 }, 10000); 

setInterval(function(){

    $(document).ready(function() {
        $('#sales_data').load('fetch_sales_data.php');
        sales_string_google = new Date().getTime(); 
     });

}, 10000);

我的问题是,时间戳变量在循环执行时每十秒重置一次,而不是在刷新模块时重置。到目前为止,6 小时的 Google 没有返回任何有用的信息,我想我可能错过了一些简单的东西,这些东西超出了我的经验。任何帮助将不胜感激,提前致谢。

最佳答案

您需要将时间戳更新代码放入 load() 的回调函数中,该函数在 AJAX 调用完成时运行。您也不需要每个函数内的 document.ready 处理程序。试试这个:

var sales_string_unix = 0;
var sales_string_google = 0;

setInterval(function(){
    $('#google_data').load('fetch_google_data.php', function() {
        sales_string_unix = new Date().getTime();  
    });          
}, 10000); 

setInterval(function() {
    $('#sales_data').load('fetch_sales_data.php', function() {
        sales_string_google = new Date().getTime(););
    });
}, 10000);

但是请注意,这些变量只有在 AJAX 调用完成后才会被填充,因此您不能在 AJAX 调用本身之后直接使用它们。您需要运行或调用依赖于回调函数本身内的时间戳的代码。

关于php - javascript onload 重置时间戳循环问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10752304/

相关文章:

php - 将主键连接到 MySQL 中另一个表的行

php - 这个时间格式是什么?

javascript - 任意重新排序和排序对象文字的javascript数组

javascript - 为什么 Selenium 找不到动态添加的 DOM 元素?

javascript - 如何将状态对象/数据传递给(异步)ajax 回调?

php - Ratchet PHP : How to mention host name?

php - 构建和验证标签系统

javascript - 使用 .resizable() 调整父 div 大小时停止子 div 调整大小

javascript - 如何使用 jQuery 将一个元素移动到另一个元素中

javascript - 当我向上滚动时,导航栏必须停留在顶部位置并且不要通过跟随导航栏图像隐藏