получить расположение файла, вернуть строку после вызова ajax для jplayer - PullRequest
0 голосов
/ 08 марта 2012

Я создаю MPE-плеер для моего производственного веб-сайта, используя jplayer.проблема, которую я имею, состоит в том, что я даю своим посетителям полную песню для прослушивания, и по этой причине я должен попытаться обезопасить свою музыку, поэтому проблема в этом.jplayer требует строку, которая является местоположением файла для дорожки, которая должна быть воспроизведена.Я хотел бы сделать вызов Ajax и вернуть это местоположение.я пытался вернуть переменную после ajax-вызова для размещения в строке, но код запускается бросил до завершения вызова ....

вот мой код:

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:

    $("#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; 
}

1 Ответ

2 голосов
/ 08 марта 2012

первое «A» в AJAX предназначено для ayshnchronous ... вы не можете вернуть mp3 из своей функции, потому что ajax не завершился, когда вы пытаетесь вернуть его.

Вам нужно сделать setMedia в случае успеха обратного вызова 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;
});
...