Javascript 从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

我试图从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>

//为各个轨迹定义对象
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)。我将继续按照您所说的在构造函数中定义值。