我正在尝试从XML文件中提取播放列表数据,并以json格式创建新的播放列表项。 jPlayer用于音频播放/播放列表和xml2json插件来转换XML。
我在将每个单独的曲目+数据作为播放列表项插入时遇到问题。另外我想知道使用原型方法是否正确用于此目的。
<script type="text/javascript">
//define object for individual tracks
var $track = {
mp3Location : "path/to/mp3",
oggLocation : "path/to/ogg",
creator : "Daisha de Wijs",
album : "Programmanaam",
title : "Onderwerp",
annotation : "Beschrijving",
poster : "path/to/img"
}
//create prototype for track object
function Track (track) {
this.track = track;
};
Track.prototype = $track;
//read XML file and pull contents
//Example XML contents
//<track>
// <mp3Location>http://www.rmuitzendinggemist.nl/uitzendinggemist/gezondheid1x02.mp3</mp3Location>
// <oggLocation>http://www.rmuitzendinggemist.nl/uitzendinggemist/gezondheid1x02.ogg</oggLocation>
// <creator>Daisha de Wijs</creator>
// <album>Gezondheid</album>
// <title>Blauwe bessen en meer</title>
// <annotation>Je bent overtuigd vegetariër of veganist en wil niets dierlijks eten.</annotation>
// <image>http://www.radiomerlijn.nl/images/stories/pics/Blauwe_bessen.jpg</image>
// </track>
$.get('xml/GezondheidList.xml', function (xml) {
var $track = $.xml2json(xml);
//use xml2json to convert each <track> into track[n] json object
});
</script>
<script type="text/javascript">
$(document).ready(function(){
$("#jquery_jplayer_1").jPlayer({
ready: function () {
$(this).jPlayer("setMedia", {
mp3: track1.mp3location,
ogg: track1.oggLocation
});
},
swfPath: "/js",
supplied: "mp3, ogg"
});
var myPlaylist = new jPlayerPlaylist({
jPlayer : "#jquery_jplayer_1",
cssSelectorAncestor: "jp_container_1"
}, [], {});
myPlaylist.setPlaylist([
//load json objects from $tracks
$tracks.val()
]);
});
</script>
答案 0 :(得分:0)
可能有问题的一件事是你加载xml并在两个不同的场合创建播放器。尝试设置播放列表时,无法保证已加载xml文件。也许将代码更改为:
$(document).ready(function(){
//.... other code
$.get('xml/GezondheidList.xml').then(
function (xml) {
var $track = $.xml2json(xml);
console.log($track);
//use xml2json to convert each <track> into track[n] json object
myPlaylist.setPlaylist([
//load json objects from $tracks
$track.val()
]);
},function(e){
//$.get error
console.log("an error:",e);
}
);
我添加了一些console.log语句。在Chrome中,您可以按F12打开开发人员工具并查看控制台选项卡。您可以单击已记录的对象以检查详细信息。如果你有Firefox,你可以安装Firebug插件并用F12打开它。该日志也会记录点击对象详细信息。