2011-11-28 81 views
0

我想使用JSON將JS對象的數組發送到PHP。我的球員數組如下:用PHP解碼JSON字符串時遇到麻煩

var player; 
var players = new Array(); 
//loop for number of players 
player = new Object(); 
player.id = theID; 
players[i] = player; 

然後我的AJAX調用看起來是這樣的:

JSONplayers = JSON.stringify(players); 
$.ajax({ 
type: "POST", 
url: "php/ajax_send_players.php", 
data: { 
    "players" : JSONplayers 
} 

在PHP端的解碼功能看起來像這樣

$players = $_REQUEST['players']; 
echo var_dump($players); 
$players = json_decode($players); 
echo 'players: ' .$players. '--'. $players[0] . '--'. $players[0]->id; 

調試中chrome,JSON播放器var在發送之前看起來像這樣: JSONplayers:「[{」id「:」Percipient「},{」id「:」4「}]」

當我在PHP vardump它看起來不錯,給這個: 字符串(40)「[{\」id \「:\」Percipient \「},{\」id \「:\」4 \「}]] 「

但我不能訪問PHP數組,關於與首發球員回聲聲明:此輸出: 玩家:----

全線沒什麼......也許它有話在數組中,我是新手,可能會丟失一些非常簡單的東西。任何幫助將不勝感激。

note我也嘗試json_decode($ players,true)將它作爲assoc數組,但得到相似的結果。

+1

http://php.net/manual/en/security.magicquotes.disabling.php – mario

+0

[爲什麼反斜槓會自動添加到所有$ _GET,$ _POST?](http:// stackoverflow。 com/questions/4359854/why-backslashes-being-being-being-being-being-added-to-all-get-post-automatically) – mario

回答

1

我試圖模仿一些數據:

var message = [ 
    {id: "90"}, 
    {"id": 123}, 
    {"id": 456}, 
    {"id": 87.5}, 
    {"id": 123.1} 
]; 

我用你的JavaScript,並增加了成功處理程序使用PHP文件的輸出:

JSONplayers = JSON.stringify(message); 
alert(JSONplayers); 
$.ajax({ 
    type: "POST", 
    url: "ajaxTest.php", 
    data: { 
     "players": JSONplayers 
    }, 
    success: function(data) { 
     $('#myId').html(data); 
    } 
}); 

然後我tweeked你的PHP一點位:

<?php 
    $players = $_REQUEST['players']; 
    $json = json_decode(stripslashes($players),true); 
    foreach($json as $row) { 
     echo $row['id'] . '<br />'; 
    } 
?> 

這會爲每個條目啓動一個新行並通過其鍵(id)引用它。

+0

謝謝,完美的工作! – Anthony