Javascript 从XML中获取播放列表项的新原型
我试图从XML文件中提取播放列表数据,并以json格式创建新的播放列表项。jPlayer用于音频播放/播放列表,xml2json插件用于转换XML 我无法将每个曲目+数据作为播放列表项插入。此外,我想知道使用原型方法是否是实现此目的的正确方法Javascript 从XML中获取播放列表项的新原型,javascript,xml,Javascript,Xml,我试图从XML文件中提取播放列表数据,并以json格式创建新的播放列表项。jPlayer用于音频播放/播放列表,xml2json插件用于转换XML 我无法将每个曲目+数据作为播放列表项插入。此外,我想知道使用原型方法是否是实现此目的的正确方法 <script type="text/javascript"> //define object for individual tracks var $track = { mp3Location : "pa
<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>
//为各个轨迹定义对象
var$track={
mp3位置:“路径/到/mp3”,
oggLocation:“路径/to/ogg”,
创造者:“Daisha de Wijs”,
专辑:“Programmanaam”,
标题:“OnDerERP”,
注释:“Beschrijving”,
发信人:"路径,目标,目标"
}
//为轨迹对象创建原型
功能轨道(轨道){
this.track=轨道;
};
Track.prototype=$Track;
//读取XML文件并提取内容
//示例XML内容
//
// http://www.rmuitzendinggemist.nl/uitzendinggemist/gezondheid1x02.mp3
// http://www.rmuitzendinggemist.nl/uitzendinggemist/gezondheid1x02.ogg
//戴莎·德韦斯
//格宗海德
//布劳韦·贝森·恩米尔
//我弯下腰来,对着素食主义者的素食主义者。
// http://www.radiomerlijn.nl/images/stories/pics/Blauwe_bessen.jpg
//
$.get('xml/GezondheidList.xml',函数(xml){
var$track=$.xml2json(xml);
//使用xml2json将每个对象转换为track[n]json对象
});
$(文档).ready(函数(){
$(“#jquery_jplayer_1”).jplayer({
就绪:函数(){
$(this).jPlayer(“setMedia”{
mp3:track1.mp3位置,
ogg:track1.oggLocation
});
},
swfPath:“/js”,
提供:“mp3,ogg”
});
var myPlaylist=新的jPlayerPlaylist({
jPlayer:#jquery_jPlayer_1“,
CSS选择器存储:“jp_容器_1”
}, [], {});
myPlaylist.setPlaylist([
//从$tracks加载json对象
$tracks.val()
]);
});
一个可能存在的问题是,在两个不同的场合加载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);
}
);
$(文档).ready(函数(){
//……其他代码
$.get('xml/GezondheidList.xml')。然后(
函数(xml){
var$track=$.xml2json(xml);
console.log($track);
//使用xml2json将每个对象转换为track[n]json对象
myPlaylist.setPlaylist([
//从$tracks加载json对象
$track.val()
]);
},功能(e){
//$.get错误
日志(“错误:”,e);
}
);
我添加了一些console.log语句。在Chrome中,您可以按F12打开开发人员工具并查看控制台选项卡。您可以单击记录的对象以查看详细信息。如果您有Firefox,您可以安装Firebug插件并用F12打开它。该日志还记录了可单击的对象详细信息。我不确定您的代码与之有何关联,您可能会看到定义一个名为Track的构造函数,但不要使用它。然后使用XHR设置一个从未使用过的值$Track,然后在文档加载时加载从未设置过的$Track。您似乎在原型上定义了特定于实例的值,可能在构造函数函数中将它们定义为
this.mp3location=…
:感谢您的快速回复:$tracks变量应该是$track(typo)。我将继续按照您所说的在构造函数中定义值。