Я пытаюсь загрузить свои данные JSON в мой скрипт после вызова ajax, но я не могу понять, что это правильно.
У меня есть библиотека 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>
Теперь я пытаюсь получить список песен data
из моей базы данных, используя вызов ajax, для заполненияэтот список песен динамически.С точки зрения PHP, все хорошо и данные в порядке.Однако при вызове ajax Amplitude.init
не работает, когда я добавляю в него свой JSON 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, которые я хочу загрузить в Amplitude.init
после выполнения вызова ajax:
//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