我已经向PHP发送了一个JSON对象来查询我的数据库并返回结果集,但是我得到了一些不寻常的行为 - 我的JSON对象在我的脚本中到达:
{ "username": "Bobby", "dob": "2015-02-12T00:00:00.000Z" }
我看起来也很好,为了对该数据执行操作我知道我需要使用json_decode
以便PHP将其作为数组接收,但是当我执行json_decode($request)
时输出数组是:
{ undefined: 24, Bobby: ["dob"]}
我以前从来没有遇到这种情况,并且无法完全了解为什么会发生这种情况
编辑:我的完整操作如下:
if(isset($request)) {
var_dump($request);
$json = json_decode($request, true);
var_dump($json);
}
第一次转储是正确的,一旦解码,我得到了偏斜的输出
编辑:我正在从Angular发送JSON对象,但我认为这不应该导致任何问题,但是我唯一能做的就是以前在应用程序中所做的不同:
if (!(userName === undefined) && !(userDob === undefined))
{
var json = { "name" : userName, "dob" : userDob };
// Create POST request to the file in the url, send it to PHP in JSON format
var callback = $http.post($scope.url, json );
callback.success(function(data, status) {
...
});
}
编辑我不太明白为什么,但是使用print_f
或var_dump
会导致结果偏差,但如果我只是这样做了:
$json = json_decode($request);
$name = $json->name;
$dob = $json->dob;
echo $name;
echo $dob;
它返回我期望的结果。
答案 0 :(得分:2)
我相信你可能需要在键周围引用:
{"用户名":" Bobby"," dob":" 2015-02-12T00:00:00.000Z" }
试一试。
答案 1 :(得分:0)
这是一个JavaScript对象。尝试:
var json = { "name" : userName, "dob" : userDob };
JSON.stringify(json);