我最近开始用 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' 索引是 UNDEFINED ,因此我尝试使用contentType: "application/x-www-form-urlencoded",
which 确实有效,但我根本无法获取数组项。
如果我不在json_decode()
函数中传递 true 参数,我将收到以下错误:
Cannot use object of type stdClass as array
如果我这样做,我不会得到数据,但响应会说“数组”。
这就是我要回应的:
$json = $_POST['json'];
$json = json_decode($json, true);
echo $json['test'][0];
这就是我的 var_dump $json
:
array(1) {
["test"]=>
array(1) {
[0]=>
array(3) {
["number"]=>
int(1)
["char"]=>
string(3) "hey"
["bool"]=>
bool(true)
}
}
}
为什么这样做?为什么我不能在不返回数组的情况下从中获取值?