<!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或任何其他建议的方法访问这些对象的属性,而无需重新创建对象。我希望这不会令人困惑。
答案 0 :(得分:1)
当PHP脚本结束时,其状态将被丢弃。正如您所说,每次再次运行此脚本时,状态将从头开始重新构建。这些值不会在请求之间自动保留。要保留数据,请将其放在session或其他永久存储器(如数据库)中。
答案 1 :(得分:1)
根据我对Chad的看法,你的数据结构并非永久性
你说你把你的代码放在ajax调用中
试着想一下ajax调用的本质,你称之为ajax函数(让我们说'下一个播放'),
然后该函数调用它之外的一些页面
机制就像你以普通的方式浏览网页一样
它每次你打电话时都要求一些对象,所以它对你当前的数据结构并不那么持久。
如果你想存储播放状态,只需尝试将数据存储在相当持久的地方,
比如在cookie或DB中。或者你可以将一些机制/算法转移到JavScript中
比如在JS变量中保持战争或甲板状态。即使添加回调函数来保持ajax调用后的状态也会有所帮助
这样,您就不必将数据存储在数据库或cookie中。
希望这有帮助。 :)