Php 访问多维JSON数据时出现问题

Php 访问多维JSON数据时出现问题,php,jquery,json,Php,Jquery,Json,我的JSON输出如下所示: 我可以通过更改JSON的参数来获取并手动访问链接来访问JSON输出。每当我尝试像这样通过post访问时,console.log行上就会出现一个未定义的错误。我想这可能是因为我有一个Json数组,每个键都是它自己的数组,但一旦我离开第一维度,我就不是那么棒了。我试过很多变体 data.songartist data[songartist] data[songartist][1] 等等等等 下面是generateplaylist.php的代码 if(isset($_P

我的JSON输出如下所示:

我可以通过更改JSON的参数来获取并手动访问链接来访问JSON输出。每当我尝试像这样通过post访问时,console.log行上就会出现一个未定义的错误。我想这可能是因为我有一个Json数组,每个键都是它自己的数组,但一旦我离开第一维度,我就不是那么棒了。我试过很多变体

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

下面是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);
}

您应该通过以下jQueryAjax请求获取数据

$.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
的元素,该元素是一个字符串数组,因此可以使用
数据引用它。songartist[1]
从数组中获取第一个字符串

小费 在php中,可以向数组中添加项,而无需指定索引。您可以将循环的代码重写为

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

你能展示一下
generateplaylist.php
的代码吗?用这段代码进行了更新,精简了一些,我有多个ajax请求正在运行,除了我将数组存储在键中而不是单个值之外,这段代码的设置与其他代码相同。很高兴了解语法,像这样写的更干净-我非常确定这会起作用,我得到的是一个错误,而不是未定义的。我不断收到“parse error”,这可能是我停止在请求中包含数据类型:“json”的原因。我假设,一旦我修复了PHP代码以解析出正确的Json(不确定为什么不是),它就会运行。谢谢编辑:为arrayLol干杯,结果是我的歌曲URL中有一个非UTF-8字符,这导致了解析错误,也是在我声明数据类型之前代码没有运行的原因。小事情,很高兴我得出了这个结论。我必须做很多小的改变来适应它,我应该已经做了
$songartist = []; // define array
$songname = []; // define array
while($row = mysqli_fetch_array($result)) {
     $songartist[] = $row['songartist'];
     $songname[] = $row['songtitle'];
}