【问题标题】:Trouble decoding JSON string with PHP使用 PHP 解码 JSON 字符串时遇到问题
【发布时间】:2011-11-28 09:01:49
【问题描述】:

我正在尝试使用 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 播放器 var 在发送之前看起来像这样: JSONplayers: "[{"id":"Percipient"},{"id":"4"}]"

当我在 PHP 中进行 vardump 时,它看起来还不错,给出了这个: string(40) "[{\"id\":\"Percipient\"},{\"id\":\"4\"}]"

但我无法访问 PHP 数组,并且关于从玩家开始的 echo 语句:输出以下内容: 玩家:----

没有什么全面的...也许它与数组中的 \'s 有关,我对此很陌生,可能会遗漏一些非常简单的东西。任何帮助将不胜感激。

注意我也尝试过 json_decode($players, true) 将其作为 assoc 数组获取,但得到了类似的结果。

【问题讨论】:

标签: php javascript json


【解决方案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) 引用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-02-14
    • 1970-01-01
    • 2018-12-09
    • 2017-02-24
    • 1970-01-01
    • 2012-07-22
    • 1970-01-01
    相关资源
    最近更新 更多