我的JSON输出如下所示:
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);
}
答案 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'];
}