如何防止 PHP 游戏从 AJAX 调用重新实例化



我的游戏不断从 AJAX 调用重新实例化,因此回合 1 一遍又一遍地重复。

我尝试制作一个 if 语句来检查对象数组是否为空,但它需要在 if 语句中$game来检查这一点,并且它会给出错误,因为直到下一行才声明$game。

<button type="button" onclick="slap()">Slap</button>
<script type="text/javascript">
    function slap() {
        $.ajax({
            url:"playgame.php", //the page containing php script
            type: "POST", //request type
            success:function(result){
                alert(result);
            }
        });
    }
</script>

游戏.php文件

<?php
    include 'game.php';
    $game = new Environment();
    $game->InitialiseGame();
    $game->DisplayStatus();
    if($game->arrayOfBees[0]->typeOfBee == "Queen") {
        $game->slap();
        $game->RemoveDeadBees();
        $game->DisplayStatus();
    } else {
        echo "The Queen died, game over!!";
    }

我希望$game只实例化和初始化一次,然后在第二次 AJAX 调用时,只执行 if-else 语句。目前,每次按下按钮时都会调用整个游戏.php文件,我看不到解决这个问题的方法?

Ajax在这里几乎无关紧要。无论HTTP请求是如何发出的,你都会遇到同样的问题。

HTTP 是无状态的。每个请求都会重新运行程序。

您需要自己显式存储状态。常见的方法是会话(如果要基于每个用户存储数据(或数据库(如果要将其存储为多人可以共享的数据(。

最新更新