无法使用PHP解码JSON字符串

时间:2011-11-28 09:01:49

标签: php javascript json

我正在尝试使用JSON将一组对象从JS发送到PHP。我有一系列的球员如下:

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 player var在发送之前看起来像这样: JSONplayers:“[{”id“:”Percipient“},{”id“:”4“}]”

当我在PHP中vardump它看起来没问题,给出这个: string(40)“[{\”id \“:\”Percipient \“},{\”id \“:\”4 \“}]”

但我无法访问PHP数组,以及关于从玩家开始的echo语句:输出: 球员:----

没有任何东西......也许它与数组中的\有关,我是新手,可能会遗漏一些非常简单的东西。任何帮助将不胜感激。

注意我也试过json_decode($ players,true)将它作为一个关联数组获得,但得到的结果相似。

1 个答案:

答案 0 :(得分: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);
    }
}); 

然后我稍微调整了你的PHP:

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

这会为每个条目添加一个新行,并通过其键(id)引用它。