0

フォルダのmp3ファイルに基づいてjPlayerプレイリストを作成しようとしています。そして私はjPlaylisterを見つけました:http: //jplaylister.yaheard.us/v_0.65/

私はここで同様の質問を見つけました: jPlayerでPHPからJSONをプレイリストに動的に入力します

今、私はこれらのことの専門家ではありません。私はデザインとシンプルなコードのような人です。しかし、私は自分の好みに合わせてコードを作成しようとしました。そして、これを思いつきました。これはまったく機能しません。$ .getJSONから応答を取得できないため、デバッグ方法もわかりません。

これが今の私のコードです:

$(document).ready(function(){

        var cssSelector = {
            jPlayer: "#jquery_jplayer_1", 
            cssSelectorAncestor: "#jp_container_1"
        };
        var playlist = []; // Empty playlist
        var options = {
            swfPath: "js", 
            supplied: "mp3"
        };

        //var playlist = [{"title":"Kalimba","mp3":"/path/to/mydirectory/Kalimba.mp3"},{"title":"Maid with  the Flaxen Hair","mp3":"/path/to/mydirectory/Maid with the Flaxen Hair.mp3"},{"title":"Sleep Away","mp3":"/path/to/mydirectory/Sleep Away.mp3"}];
    var url=  "getSongurl.php";
    var song = "Assets/mp3/mysong";

    var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options);   
    $.getJSON(url, {songurl: song}, function(data) {
        $.each(data, function(key, val) {
            myPlaylist.add(value);
        })
    }); 
});

歌の変数をJSONに渡して、PHPでフォルダーを処理し、そのフォルダーからすべてのファイルを返すことができるようにします。

さて、これがPHPファイルです:

<?php

    $results = array();

    $directory = $_POST['songurl'];
    $handler = opendir($directory);

    while ($file = readdir($handler)) {
            $results[] = $file;
            <script type="text/javascript">
                alert("file: <?php echo $file; ?>");
            </script>
    }

    $limit = count($results();
    $i = 0;

    while ($i < $limit) {
        $filesJson = array(
            'title:' => $i,
            'mp3:' => $i
        );
    }

    //tidy up
    closedir($handler);
    echo json_encode($filesJson);

    ?>

そこにアラートを入れようとしましたが、アラートも届きません。おそらくここで本当に間違ったことをした私だけです。

4

3 に答える 3

1

あなたのphpファイルのような

<?php
$results = array(); 
$fdirectory = (isset($_REQUEST['songurl']))?$_REQUEST['songurl']:'songs/';
$handler = opendir($fdirectory);
while ($file = readdir($handler)) {
        if($file != '.' && $file != '..')
        $results[] = $file;
}

if(!empty($results)){
    foreach($results as $k=>$song){
        $filesJson[] = array(
            'title' => preg_replace('/\\.[^.\\s]{3,4}$/', '', $song),
            'mp3' => $fdirectory.$song
        );
    }
}    
closedir($handler);
$songList = json_encode($filesJson);
    if(isset($_REQUEST['songurl'])){
        echo $songList;
    }

JS

var url=  "getSongs.php";
var song = "Assets/mp3/mysong/";
var cssSelector = {
        jPlayer: "#jquery_jplayer_1", 
        cssSelectorAncestor: "#jp_container_1"
    };

var playlist = []; // Empty playlist
var options = {
  swfPath: "dist/jplayer",
  supplied: "mp3"
};
$(document).ready(function(){   
    var myPlaylist = new jPlayerPlaylist(cssSelector, playlist, options);   
   $.getJSON(url, {songurl: song}, function(data) {
      $.each(data, function(key, val) {
        myPlaylist.add(val);
      })
   }); 

});

お楽しみください:)

于 2016-10-15T15:36:37.710 に答える
0

$limit = count($results());まず、 ではなくが必要です$limit = count($results();。それはそれを台無しにしているかもしれません。

于 2014-01-27T15:33:18.273 に答える
0

私は jplaylister を書きましたが、一見すると、JSON はここではあまり必要ありません。スクリプトは、「フォルダーを指す」ように作成され、そのフォルダー/サブフォルダーで見つかったすべてのものに基づいてプレイリスト (フィルター可能) を作成します。

php 配列を使用して見つけたものを保存し、(現在のバージョンでは) ファイルの数が多く、それらから ID3 情報を取得するのに時間がかかる場合に備えて、プレイリスト キャッシュを提供します。

jplaylister を動作させます (または、動作していないことを知らせて、理由を教えていただくか、開発コードにリンクしてください)。次に、メディア ファイルをそれに追加します。

幸運を!

ニック・C

于 2014-04-15T06:19:30.117 に答える