在jQuery AJAX调用上POST数组为空

时间:2012-10-21 17:38:18

标签: php jquery post

我毫不犹豫地问,因为此主题还有很多其他帖子(例如onetwo),但这些帖子中的解决方案似乎都不适用于我。

我正在尝试将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 output     json没有收到

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


POST VARIABLES
Array
(
)


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

2 个答案:

答案 0 :(得分:5)

尝试使用PHP,如下所示(当请求是应用程序/ json时,则不会将数据输入$ _POST)

var_dump(json_decode(file_get_contents("php://input")));

答案 1 :(得分:0)

试试这个 可能会对你有用

 $.ajax({
type: 'POST',
url:"controller.php?a=update-player",
data: data_json=JSON.stringify(playerinfo),
success: function (data){
},
});