无法访问多维JSON数据

时间:2014-11-02 09:51:37

标签: php jquery json

我的JSON输出如下所示: enter image description here

var request = $.ajax({
                type: "POST",
                url: "generateplaylist.php",
                data: {
                    id: myClassID
                }
            });
            request.fail(function(jqXHR, textStatus) {
                            alert("Request failed: " + textStatus);
                        });
            request.done(function(data) {
                        console.log(data.songartist[1]);})

我可以通过将其参数更改为GET并手动访问该链接来访问该JSON输出。每当我尝试通过这样的帖子访问时,我在console.log行上得到一个未定义的错误。我想这可能是因为我有一个Json数组,每个键都是它自己的数组,但是一旦离开第一个维度,我就不那么好了。我尝试了很多变种

data.songartist
data[songartist]
data[songartist][1]

etc.etc。

以下是generateplaylist.php的代码

if(isset($_POST['id'])){
        $json = array(
            'success'   => false,
            'songartist'    => '',
            'songname'  => ''
        );  

        $x = 0;
        while($row = mysqli_fetch_array($result)) {
             $songartist[$x] = $row['songartist'];
             $songname[$x] = $row['songtitle'];
             $x++;
        }

        $json['success']        = true;
        $json['songartist']     = $songartist;
        $json['songname']       = $songname;

        echo json_encode($json);
}

1 个答案:

答案 0 :(得分:0)

您应该使用以下jQuery ajax请求获取数据

$.ajax({
    type: "POST",
    url: "generateplaylist.php",
    dataType: "json", // set explicit expected format as json
    data: {
        id: myClassID
    }
})
.success(function(data) {
    console.log(data.songartist[1]);
})
.error(function (jqXHR, textStatus) {
    alert("Request failed: " + textStatus);
});

数据包含一个名为songartist的元素,此元素是一个字符串数组,因此可以使用data.songartist[1]引用它以从数组中获取第一个字符串。

提示 在您的PHP中,您可以在不指定索引的情况下将项添加到数组中。您可以将循环的代码重写为

$songartist = []; // define array
$songname = []; // define array
while($row = mysqli_fetch_array($result)) {
     $songartist[] = $row['songartist'];
     $songname[] = $row['songtitle'];
}