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>

私には2つのクラスがあります(コードは必要ありません)。提供されたコードから、戦争クラス、プレーヤー1クラス、およびプレーヤー2を作成します。一言で言えば、これは2人のプレーヤーにカードを配り、クラスを作成することです。

私の問題は、NextPlayと呼ばれる以下のajax関数を作成しようとしていることです。クリックすると、別のPHPファイルを開くことができますが、$ war、$ player_one、または$player_twoにアクセスできません。

もう1つの問題は、PHPコードをajax呼び出しに入れると、[次の再生]をクリックするたびにこれらのオブジェクトが再作成されることです。

最終的な目標は、これらのオブジェクトを作成し、オブジェクトを再作成せずにajaxまたはその他の推奨される方法でこれらのプロパティにアクセスしようとしていることです。これが混乱しないことを願っています。

4

2 に答える 2

1

PHPスクリプトが終了すると、その状態は破棄されます。正しく言ったように、このスクリプトを再度実行するたびに、状態は最初から再構築されます。値は、リクエスト間で自動的に保持されません。データを永続化するには、データをセッションまたはデータベースなどの他の永続ストレージに配置します。

于 2012-05-23T03:27:01.653 に答える
1

私の仮定では、チャドは、あなたのデータ構造はあなたのプレイを通して永続的ではありません。
あなたはあなたのコードをajax呼び出しに入れると言いました。
ajax呼び出しの性質を考えてみてください。次に、ajax関数を呼び出し(「次の再生」としましょう)、
関数はその外側のページを呼び出します。
このメカニズムは、通常の方法でWebを閲覧するのと同じで
、呼び出しを行うたびにいくつかのオブジェクトを要求するため、現在のデータ構造ではそれほど永続的ではありません。

再生ステータスを保存する場合は
、CookieやDBなど、非常に永続的な場所にデータを保存してみてください。
または、JS変数で戦争やデッキのステータスを維持するなど、いくつかのメカニズム/アルゴリズムを代わりにJavScriptに移動することもできます。ajax呼び出しの後でステータスを保持するためにコールバック関数を追加することさえ、役に立ちます。
このように、データをDBまたはCookieに保存する必要はありません。

この助けを願っています。:)

于 2012-05-23T03:42:00.627 に答える