2012-10-21 139 views
2

我很猶豫,因爲在這個主題上有很多其他帖子(例如onetwo),但這些帖子中的解決方案似乎都不適用於我。jQuery AJAX調用的POST數組爲空

我想通過一個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 output JSON沒有收到

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


POST VARIABLES 
Array 
(
) 


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

回答

5

嘗試在PHP如下(當請求是應用程序/ JSON,那麼您將無法獲得的數據爲$ _ POST)

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

我看到裏面的東西! – espais

+0

由於application/json,你的json傳入正文請求 – GBD

+0

ahhh,這很有意義......所以我可以將它拉入本地對象並從那裏開始工作。謝謝! – espais

0

試試這個 五月不管它會爲你工作

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

試過了,但是$ _POST陣列仍然是空的。 – espais

+0

可以請你再次發佈PHP代碼,並使用$ _POST ['data_json']? –

+0

查看接受的答案...我只是要讀取原始輸入數據。雖然謝謝! – espais