2011-11-28 42 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