2013-11-26 2 views
0

XML 파일에서 재생 목록 데이터를 가져 와서 json 형식으로 새 재생 목록 항목을 만들려고합니다. jPlayer는 오디오 재생/재생 목록 및 xml2json 플러그인을 사용하여 XML을 변환합니다.재생 목록 항목에 대해 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

코드와 어떤 관련이 있는지 잘 모르겠습니다. Track이라는 생성자 함수를 정의했지만 결코 사용하지 마십시오. 그런 다음 XHR을 사용하여 결코 사용되지 않는 $ track 값을 설정 한 다음 문서로드시 설정되지 않은 $ 트랙을로드합니다. 프로토 타입에 인스턴스 특정 값을 정의하는 것처럼 보이며, 생성자 함수에서 'this.mp3location = ...'으로 정의 할 수 있습니다. http://stackoverflow.com/a/16063711/1641941 – HMR

+0

빠른 응답을 보내 주셔서 감사합니다! $ tracks 변수는 $ track (typo) 여야합니다. 앞에서 말한 것처럼 생성자 함수의 값을 정의 할 것입니다. – SdeWijs

답변

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로 열 수 있습니다. 클릭 할 수있는 개체 정보도 기록됩니다.