使用AJAX进行自动刷新和缓存[messy]

时间:2012-02-19 01:47:57

标签: php jquery ajax

我制作了一个包含许多个别阶段的小游戏 - 当第一阶段完成时,它会前进到第二阶段,然后是三阶段,依此类推,直到达到一个条件,结束游戏并开始新的。

如果满足某个条件,我使用以下jQuery AJAX刷新游戏的页面(update()检查下一阶段是否有时间,并刷新()如果是这样做的话:

<script>
    function refresh() {
      $.ajax({
        type: 'POST',
        url: 'index.php',
        data: 'refresh=true',
        timeout: 0,
        success: function(data) {
            $("#current_game").html(data);
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
          $("#notice_div").html('Error contacting server. Retrying in 60 seconds.');
          window.setTimeout(update, 60000);
        }
    });
    };

    function update() {
      $.ajax({
        type: 'POST',
        url: 'check_time.php',
        data: 'checktime=true',
        timeout: 0,
        success: function(data) {
            $(".time_remaining").html(data);
            window.setTimeout(update, 1000);
            var time = data;
            if(time<=0)
            {
                $(".time_remaining").html("Reloading the page now.");
                $(".time_remaining_end").html("Reloading the page now.");
                refresh();
            }
            else
            {
                $(".time_remaining").html("There are "+data+" seconds remaining in this phase." );
                $(".time_remaining_end").html("There are "+data+" seconds until the next game." );
            }
        },
        error: function (XMLHttpRequest, textStatus, errorThrown) {
          $("#notice_div").html('Error contacting server. Retrying in 60 seconds.');
          window.setTimeout(update, 60000);
        }
    });
    };

$(document).ready(update);
</script>

现在,我正在缓存游戏参数。每次阶段进展时游戏参数都会改变,所以我需要删除那个缓存文件cache_game.php。

我试图通过在每次调用phase_up()函数时删除缓存来执行此操作,使用(为了清晰度极其简化)脚本(适用于我的$ cache类):

<?php
function phase_up()
{
    global $db, $cache;

    if(condition1)
    {
        ...;
    }
    else
    {
        if(condition2)
        {
            ...;
        }
        else
        {
            ...;

            exit;
        }

        $sql = "UPDATE games
                SET phase_details = ...
                WHERE game_id = ...";
        $db->query($sql);
    }

    $cache->delete('game');
}
?>

然而,当我的AJAX通过index.php调用它时,它并没有推进阶段。手动刷新页面确实可以推进这个阶段。

AJAX只是告诉index.php调用phase_up()。

0 个答案:

没有答案