PHP JSON无法回显值,总是返回一个数组?

时间:2013-10-12 21:38:07

标签: javascript php ajax json

我最近开始使用ajax搞砸了Json。

我有这个javascript代码:

var json = {
    "test": [{
        "number":1,
        "char":"hey",
        "bool":true
    }]
};
$.ajax({
    url: "json.php",
    type: "POST",
    contentType: "application/json",
    data: {json: JSON.stringify(json)},
    success: function(res) {
        $("#box").html(res);
    }
});

几分钟前,这段代码完全正常,当我echo $json['test']['number'];返回时1

但现在这根本不起作用,它说'json'索引是UNDEFINED,因此我尝试使用contentType: "application/x-www-form-urlencoded",,它确实有效,但我根本无法得到数组项。

如果我不在json_decode()函数中传递true参数,我将收到以下错误:

Cannot use object of type stdClass as array

如果我这样做,我将无法获取数据,但响应将显示“数组”。

这就是我回应

$json = $_POST['json'];
$json = json_decode($json, true);
echo $json['test'][0];

那是$json的var_dump:

array(1) {
  ["test"]=>
  array(1) {
    [0]=>
    array(3) {
      ["number"]=>
      int(1)
      ["char"]=>
      string(3) "hey"
      ["bool"]=>
      bool(true)
    }
  }
}

为什么这样做?为什么我不能在没有返回数组的情况下从中获取值?

1 个答案:

答案 0 :(得分:4)

鉴于此:

var json = {
    "test": [{
        "number":1,
        "char":"hey",
        "bool":true
    }]
};

您的PHP代码

$json['test']['number'];
如果test 不是数组,

首先会 。以上用JavaScript表示:

json.test.number;

testArray;它没有number属性。在JavaScript中,这是查找number的正确方法:

json.test[0].number;

你需要在PHP中做同样的事情:

$json['test'][0]['number'];