无法在js中读取php JSON编码数据

时间:2015-03-23 16:22:42

标签: javascript php jquery ajax json

我通过AJAX调用php脚本,它返回一个json编码对象。

$.post("php/getCamera.php", {
        cam_id: identifier
        }, function(data){
            console.log(data);
            //var camera = JSON.parse(data);
            var camera = $.parseJSON(data);
            console.log(camera.name);
            console.log(data['name']);
            console.log(camera['name']);
    });
}

这是我的PHP脚本:

<?php
    require 'Camera.php';

    $camera = new Camera();
    if(isset($_POST["cam_id"])) {
        $cam_obj = $camera->getCamera($_POST['cam_id']);
        $cam_obj_array = get_object_vars($cam_obj);
        echo json_encode($cam_obj_array);

    }
?>

这是我的相机课程:

class Camera
{
    public $id;
    public $name;
    ...

}

在js控制台中,我看到了编码数据,但我无法访问其元素:

{"id":"6","name":"camera 1"}
undefined
undefined
undefined
undefined

2 个答案:

答案 0 :(得分:2)

试试这个:

console.log(data.name);

从您的日志中可以看出,数据已经是JSON对象,因此无需进一步解析。

答案 1 :(得分:2)

在帖子请求的末尾添加'json':

$.post("php/getCamera.php", {
        cam_id: identifier
        }, function(data){
            console.log(data);
            console.log(camera.name);
            console.log(data['name']);
            console.log(camera['name']);
    }, 'json');
}

这是完整的ajax语法dataType: "json"的简写。

更好的是,使用getJSON而不是帖子(但是,删除'json':)