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

Cant read php JSON encoded data in js

本文关键字:JSON 编码 数据 php 中的 读取 js      更新时间:2023-09-26

我通过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

在帖子请求的末尾添加"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而不是post(但随后删除"json":)

试试这个:

console.log(data.name);

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