0

我正在尝试基于文件夹中的 mp3 文件创建 jPlayer 播放列表。我找到了 jPlaylister:http: //jplaylister.yaheard.us/v_0.65/

我在这里发现了一个类似的问题: Dynamically populate playlist with JSON from PHP in jPlayer

现在,我不是这些事情的专家。我更像是一个设计和简单代码的人。但是我尝试根据自己的喜好构建代码,并且我想出了这个。这根本不起作用。我也不确定如何调试它,因为我无法从 $.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 回答