3

2つのphpオブジェクトをそのままデータとして$.postに渡したいと思います。

        $(function() {
            $("button").click(function() {  
                $.post("fight.php",{player: "<?php $player;?>", enemy: "<?php $enemy; ?>"},function(result) {
                    $("#displayFight").html(result);
                });
            });
        });

$player$enemyそれぞれいくつかのプロパティを持つ 2 つの異なるオブジェクトです。それらをオブジェクト全体として渡したいので、fight.phpそれらを処理できます。

私も試しましserializeたが、役に立ちませんでした:

{player: $("<?php $player ?>").serialize()}

これどうやってするの?

注:私が試したすべての方法で、「不明な識別子」を取得するか、受信ページで $_POST が空になります。

編集: json_encode 部分は機能しますが、デコードは失敗します。受信ページで:

$player = json_decode($_POST["player"])

失敗してエラーを返します:json_decode() expects parameter 1 to be string, array given

4

4 に答える 4

3

json_encode次のように を使用する必要があります。

$.post("fight.php",{
    player: <?php echo json_encode($player);?>, 
    enemy: <?php echo json_encode($enemy);?>
}, ... );

<?php ?>タグを引用符で囲んでいないことに注意してください。json_encode必要に応じて自動的に追加されます。

それとは別に、json_encode課される要件に注意する必要があります。最も重要なことは、オブジェクトに文字列コンテンツが含まれている場合 (プロパティまたはサブオブジェクトのプロパティとして)、これらの文字列を UTF-8 でエンコードする必要があることです。

于 2013-05-19T20:53:19.313 に答える
1

PHP と Javascript の間で簡単に通信するには、オブジェクトを適切にシリアライズする必要があります。最も簡単な方法は、PHP コードで json_encode($player) を呼び出すことです。次に、PHP で再度フェッチするときに、json_decode() を呼び出して、オブジェクトを適切に初期化する必要があります。PHP と Javascript がオブジェクトのインスタンスを共有する方法はありません。シリアル化されたデータのみ。

于 2013-05-19T20:52:58.077 に答える
1

http://www.php.net/manual/en/function.json-encode.phpを使用してみてくださいjson_encode

{player: <?php json_encode($player); ?>}
于 2013-05-19T20:53:24.890 に答える