2

このトピックに関する他の投稿が多数あるため (たとえば、1 つと 2 つ)、質問するのをためらっていますが、これらの投稿の解決策はどれも私には当てはまらないようです

JSON でエンコードされたオブジェクトをページから PHP コントローラーに渡してから、何らかの情報で応答しようとしています。

Firebug で監視すると、[Post] タブでオブジェクトが送信されているのがわかりますが、$_GET、$_POST、および $_REQUEST 配列を出力すると、json オブジェクトに関しては何も表示されません。$_GET 配列には、少なくとも「update-player」のクエリ文字列が表示されますが、POST は空で、REQUEST は私が持っているローカル Cookie のみを表示します。

これが私のjQueryコードです。ご覧のとおり、現時点では JSON をハードコーディングしています。その意図は、jQuery メソッドでローカル オブジェクトを更新することです。

function sendPlayerUpdate(row, col) {
    var playerinfo = [
        {
          "id": 1,
          "row": row,
          "col": col
        }
      ];

        alert(playerinfo[0].id); //debugging

    $.ajax({
        type: 'POST',
        url:"controller.php?a=update-player",
        //data: $.toJSON(playerinfo[0],
        data: { json: JSON.stringify(playerinfo) },
        contentType: "application/json",
        success: function (){

        },
        dataType: 'json'
      });
 };

リクエストを処理する対応する PHP コード:

// update player information from AJAX POST
case "update-player":
  if (isset($_POST['json'])) echo "json received\n\n";
  else echo "json not received\n\n";
  echo "GET VARIABLES\n";
  print_r($_GET);
  echo "\n\nPOST VARIABLES\n";
  print_r($_POST);
  echo "\n\nREQUEST VARIABLES\n";
  print_r($_REQUEST);

そして、私が Firebug で見たもの:

Firebug の出力 json が受信されない

GET VARIABLES
Array
(
    [a] => update-player
)


POST VARIABLES
Array
(
)


REQUEST VARIABLES
Array
(
    [a] => update-player
    (local cookies)
)
4

2 に答える 2

5

以下のように PHP で試してください (リクエストがアプリケーション/json の場合、$_POST にデータを取得しません)

var_dump(json_decode(file_get_contents("php://input")));
于 2012-10-21T17:51:05.857 に答える
0

これを試してみてくださいそれはあなたのために働くかもしれません

 $.ajax({
type: 'POST',
url:"controller.php?a=update-player",
data: data_json=JSON.stringify(playerinfo),
success: function (data){
},
}); 
于 2012-10-21T17:46:47.397 に答える