2012-03-08 14 views
0

jplayerを使用して、制作ウェブサイトのmpeプレーヤーを構築しています。私が持っている問題は、私の訪問者に聴くために全曲を与えているからです。その理由から私は自分の音楽を守ろうとする必要があります。 jplayerには、再生するトラックのファイルの場所である文字列が必要です。私は、AJAXの呼び出しを行い、その場所を返すことを望みます。 AJAX呼び出しは、文字列の場所に配置されるようにした後、私はvaribleを返すようにしようとしたが、コードの実行が投げた通話が終了している前に....jplayerのajax呼び出しの後にファイルの場所を返すreturn string

HERESに私のコード:

HTMLマークアップ:

<div id="player"></div> 

     <!-- Using the cssSelectorAncestor option with the default cssSelector class names to enable control association of standard functions using built in features --> 

     <div id="jp_container" class="demo-container"> 

      <p> 
       <div class="pro"></div> 
       <span class="play-state"></span> : <span class="track-name">nothing</span><br /> 

       of <span class="jp-duration"></span>, which is 
       <span class="jp-current-time"></span><br /> 
      </p> 
      <ul class="toolbar ui-widget-header ui-corner-all"> 
       <li><button class="jp-Prev" href="#">Prev</button></li> 
       <li><button class="jp-play" href="#">Play</button></li> 
       <li><button class="jp-pause" href="#">Pause</button></li> 
       <li><button class="jp-stop" href="#">Stop</button></li> 
       <li><button class="jp-Next" href="#">Next</button></li> 
       <li><button class="jp-mute" href="#">Mute</button></li> 
       <li><button class="jp-unmute" href="#">Unmute</button></li> 
       <li><div class="jp-volume-bar"></div></li> 
      </ul> 
      <ul class="playlist"> 
       <li><span>Select a track :</span></li> 
       <? Beats(); ?> 
      </ul> 
     </div> 

jQueryのマークアップ:AJAXで

$("#jp_container .track").on("click",function(event) { 
     var x = $(this).attr('id'); 
     var mp3File = // maybe a function can go here 
     my_jPlayer.jPlayer("setMedia", { 
      mp3: //this is where the string is expected 
     }); 
     my_jPlayer.jPlayer("play"); 
     my_trackName.text($(this).text()); 
     $(this).blur(); 
     return false;  
    }); 
// here is were i get the location in a function i workout already 
function url(x){ 
    var mp3; 
    $.ajax({ 
    type: "POST", 
    url: "hosts/beats/beat.php", 
    data: "<?=md5('url')?>="+x+"&ok=<?=md5(rand(1,20))?>", 
    dataType: "html", 
    success:function(data){ var mp3 = data; } 
     }); 
    return mp3; 
} 

答えて

2

最初の「A」はayshnchronous用である場合ヨーヨーアヤックスが完了していないので...あなたはあなたの関数からmp3を返すことはできませんあなたはそれを返そうとします。あなたは、AJAX

$("#jp_container .track").on("click", function(event) { 
    var x = $(this).attr('id'); 

    $.ajax({ 
     type: "POST", 
     url: "hosts/beats/beat.php", 
     data: "<?=md5('url')?>=" + x + "&ok=<?=md5(rand(1,20))?>", 
     dataType: "html", 
     success: function(data) { 

      my_jPlayer.jPlayer("setMedia", { 
       mp3: data 
      }); 
      my_jPlayer.jPlayer("play"); 
      my_trackName.text($(this).text()); 
      $(this).blur(); 

     } 
    }); 

    return false; 
}); 
の成功コールバック内 setMediaを行う必要があり

関連する問題