0
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>The Ultimate War Game</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript"></script>
<script src="_assets//js/ajax.js" type="text/javascript"></script>
</head>

<body>

<?php
include("/_assets/inc/war.php");
include("/_assets/inc/player.php");


    $war = new War();
    $deck_one = $war->getPlayerOneDeck();
    $deck_two = $war->getPlayerTwoDeck();

    $player_one = new Player($deck_one);
    $player_two = new Player($deck_two);

    ?>

<a id="next-card" href="javascript:void(0)">Next Play</a>


<div class="table">

    <div class="hands">

    </div>

</div>
</body>
</html>

我有两个课程(不需要代码)。从提供的代码中,我创建了一个战争类、玩家一类和玩家二。简而言之,它的作用是向两名玩家发牌并创建班级。

我的问题是我正在尝试在下面创建一个名为 Next Play 的 ajax 函数。单击后,我可以打开另一个 PHP 文件,但无法访问 $war、$player_one 或 $player_two。

另一个问题是,如果我将 PHP 代码放在 ajax 调用中,那么每次单击“Next Play”时它都会重新创建这些对象。

最终目标是我尝试创建这些对象,然后通过 ajax 或任何其他建议的方法访问这些对象的属性,而无需重新创建对象。我希望这不会令人困惑。

4

2 回答 2

1

当 PHP 脚本结束时,它的状态被丢弃。正如您所说的那样,每次再次运行此脚本时,状态都会从头开始重新建立。这些值不会跨请求自动保留。要持久化数据,请将其放入会话或其他永久存储(如数据库)中。

于 2012-05-23T03:27:01.653 回答
1

根据我的假设乍得,您的数据结构在您的游戏中不是永久的。
你说你把你的代码放在一个ajax调用中。
试着想一想 ajax 调用的本质,你调用了一个 ajax 函数(比如说'next play'),
然后该函数调用它之外的某个页面。
该机制就像你以普通方式浏览网页一样,
每次调用时都会请求一些对象,因此对于你当前的数据结构来说并不是那么持久。

如果您想存储播放状态,只需尝试将数据存储
在相当持久的地方,例如 cookie 或 DB。或者你可以将一些机制/算法移动到 JavScript 中,
比如在 JS 变量中保持战争或卡组状态。即使在 ajax 调用后添加回调函数来保持您的状态也会有所帮助。
这样,您不必将数据存储在 DB 或 cookie 中。

希望这有帮助。:)

于 2012-05-23T03:42:00.627 回答