JavaScript自动检查的问题

Issue with JavaScript auto-check

本文关键字:问题 检查 JavaScript      更新时间:2023-09-26

我正在尝试检查是否使用jQuery.get()发布了我的软件的新版本;通过调用PHP脚本,然后得到它返回的东西,然后离开它。下面是我的代码:

JavaScript代码:

var old_count = 0;
$.get("api/build/update-check.php", function(data) {
    old_count = data;
});
window.setInterval(function() {
    $.get("api/build/update-check.php", function(data) {
        var count = old_count;
        if(old_count < count)
            console.warn("There is a new build available!");
        console.log("Old Count: " + old_count);
        console.log("New Count: " + count);
        old_count = count;
    });
    console.info("Checked for new builds successfully!");
}, 5000);
PHP脚本:

<?php
$fi = new FilesystemIterator("../../download/builds/", FilesystemIterator::SKIP_DOTS);
$count = iterator_count($fi) - 1; //Subtract the .htaccess file
echo $count;

它会完美地运行一次,它会像它应该的那样重新运行方法,然而,当它重新运行脚本时,它不会改变变量。我知道一个事实,PHP脚本工作良好,因为我已经测试了它。我认为问题是,它得到一次检查脚本,然后保持在间隔期间使用。有没有办法让它每次都调用PHP脚本,或者我需要做些什么来让它按我想要的方式工作?

我觉得有问题

var count = old_count;
if(old_count < count)

它们100%相等,这些值怎么可能不同?

我想你是指

var count = data;

在这个地方;)

var old_count = 0;
$.get("api/build/update-check.php", function(data) {
    old_count = data;
});
window.setInterval(function() {
    $.get("api/build/update-check.php", function(data) {
        // count = data instead of old_count. You assign old_count = count later
        var count = data;
        if(old_count < count)
            console.warn("There is a new build available!");
        console.log("Old Count: " + old_count);
        console.log("New Count: " + count);
        old_count = count;
    });
    console.info("Checked for new builds successfully!");
}, 5000);

您可以通过使用像这样的随机查询字符串请求PHP页面来防止缓存:

window.setInterval(function() {
    $.get("api/build/update-check.php?"+Math.random(), function(data) {
        // ...
    });
    console.info("Checked for new builds successfully!");
}, 5000);