我最近开始使用 Json 和 ajax。
我有这个 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' 索引未定义,因此我尝试使用 contentType: "application/x-www-form-urlencoded",
,它确实工作,但我根本无法获取数组项。
如果我不在 json_decode()
函数中传递 true 参数,我将收到以下错误:
Cannot use object of type stdClass as array
如果我这样做,我将无法获取数据,但响应会显示“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)
}
}
}
为什么要这么做?为什么我不能在不返回数组的情况下从中获取值?
最佳答案
鉴于此:
var json = {
"test": [{
"number":1,
"char":"hey",
"bool":true
}]
};
您的 PHP 代码
$json['test']['number'];
如果test
不是数组,那么首先仅可以工作。上面的 JavaScript 代码看起来像:
json.test.number;
但是test
是一个Array
;它没有 number
属性。在 JavaScript 中,这将是查找数字
的正确方法:
json.test[0].number;
您需要在 PHP 中执行相同的操作:
$json['test'][0]['number'];
关于javascript - PHP JSON 无法回显值,总是返回数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19339449/