<!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>
我有两个类(不需要代码)。根据提供的代码,我创建了一个war类、玩家一类和玩家二类。简而言之,它所做的就是将牌分发给两个玩家并创建类。
我的问题是我正在尝试创建一个下面的ajax函数,叫做Next Play。单击后,我可以打开另一个PHP文件,但无法访问$war、$player_one或$player_two。
另一个问题是,如果我将PHP代码放在ajax调用中,那么每次我单击"Next Play“时,它都会重新创建这些对象。
最终目标是尝试创建这些对象,然后通过ajax或任何其他建议的方法访问这些对象的属性,而无需重新创建这些对象。我希望这不会让人感到困惑。
发布于 2012-05-23 03:42:01
以我的假设查德,你的数据结构在你的游戏中不是永久的。
你说你把你的代码放在ajax调用中。
试想一下ajax调用的本质,你调用一个ajax函数(假设是'next play'),
然后该函数调用它外部的一些页面。
这个机制就像你用普通的方式浏览网页一样,
它在您每次调用时都会请求一些对象,因此它对当前数据结构不是很持久。
如果您想存储播放状态,只需尝试将数据存储在非常持久位置,
就像在曲奇或者数据库里。或者,您可以将一些机制/算法转移到JavScript中,
比如在JS变量中保持war或deck的状态。即使在ajax调用后添加一个回调函数来保存状态也会有所帮助。
这样,您就不必将数据存储在DB或cookie中。
希望这能有所帮助。:)
发布于 2012-05-23 03:27:02
当PHP脚本结束时,其状态将被丢弃。正如您所说的那样,每次您再次运行此脚本时,都会从头开始重新构建状态。这些值不会跨请求自动持久化。要持久化数据,请将其放入session或其他永久存储中,如数据库。
https://stackoverflow.com/questions/10713019
复制