在JQuery Ajax调用之后将JSON数据从PHP附加到脚本

时间:2018-06-12 18:01:55

标签: javascript php jquery json ajax

我正在尝试在ajax调用之后将我的JSON数据加载到我的脚本中,但我似乎无法正确使用它。

我有一个Javascript库,它通过一组JSON数据加载一组音乐。例如,这是用几首歌加载脚本的样子:

<script>
    Amplitude.init({
        "songs": [
            {
                "name": "Song Name 1",
                "artist": "Super Dj",
                "album": "2018 Super Hit",
                "url": "songs/1.mp3",
                "cover_art_url": "../album-art/2018superhit.png"
            },
            {
                "name": "Song Name 2",
                "artist": "Super Dj",
                "album": "2018 Super Hit",
                "url": "songs/2.mp3",
                "cover_art_url": "../album-art/2018superhit.png"
            }
        ]
    });
</script>

现在,我正在尝试使用ajax调用从我的数据库中获取歌曲列表data,以动态填充此歌曲列表。从PHP方面来看,这一切都很好,数据也很好。但是,在ajax调用中,当我向其添加JSON Amplitude.init时,data不起作用。下面的代码可以让您更好地了解我的意思:

$(".mu-container").click(function(e){
    e.preventDefault();
    var albumId = $(this).attr("data-album");
    $("#musicContainer").fadeIn();
    $("#playerRibbon").fadeIn();
    $.ajax({
        url: "includes/app/load_music.php",
        type: "POST",
        data: "album_id="+albumId,
        dataType: 'JSON',
        success: function(data)
        {
            Amplitude.init({
                "songs": [
                    data
                ]
            });
        },
        error: function(err)
        {
            alert(err);
        }
   });
});

最后,这是我的PHP代码,它返回JSON数据,我想在进行ajax调用后加载到Amplitude.init

//Database connection done above
$data = array();
foreach($songs as $song){
    $data[] = array("name" => $song['title'], "artist" => $song['artist'], "album" => $song['album_title'], "url" => $song['url'], "cover_art_url" => $song['album_art']);
}

echo json_encode($data); //If I run the php as a standalone with a test ID, it works just fine

1 个答案:

答案 0 :(得分:1)

使用

Amplitude.init({
    "songs": data
});

因为data已经是一个对象数组。