0

在我的网络服务器上,我有几个目录,其中包含文件,例如:

  • 文件夹/file.xml
  • 另一个文件夹/file.xml
  • 仍然另一个/file.xml

这些文件包含有关我想在地图上显示的一些位置的信息(使用 openlayers),因此我需要 JS 中的文件。问题是我不知道这些文件夹叫什么以及它们有多少,所以我需要一个它们的列表。

我需要这样的东西:

for each (folder as f)
    map.showLocations(f/file.xml)

怎么可能做到这一点?

我搜索了解决方案,但我发现的只是客户端的文件和文件夹。我正在使用原型 js,并且可以使用 PHP。

4

3 回答 3

1

如果你在 PHP 变量中列出你的目录$directories,你可以echo像这样的页面

echo '<script>var Directories = '.json_encode($directories).';</script>';

现在您的页面中有一个 javascript 变量,您可以对其进行迭代并施展魔法

for (dir in Directories) {
  map.showLocations(Directories[dir]/file.xml);
}

另一种选择是让 AJAX 请求为您执行此操作(我在此示例中使用 jQuery,因为我不知道原型但它应该大致相同)

$.getJSON('directories.php', function(data) {
  $.each(data, function(index, value) {
    map.showLocations(value+'/file.xml');
  });
});

你的PHP代码应该是这样的

<?php
  *** iterate over the directories and save them into an array ***
  echo json_encode($directories);
  exit();
?>
于 2013-02-28T20:56:30.473 回答
0

为了我的工作,我只需要在大约 2 小时前完成这项工作。我使用了来自 A Beautiful Site 的一个名为 jQuery File Tree 的 jQuery 插件

如果您只是想将数据导入 JavaScript,那么这个 UI 插件可能有点矫枉过正,但它包含的源代码将返回包含路径列表的 JSON,您可以通过调用 jQuery.ajax 请求来获取。

JavaScript (jQuery):

$.ajax({
    type: "POST",
    data: {
        dir : '/your_directory'
    }
    contentType: "application/json; charset=utf-8",
    url: 'getDirectories.php',
    success: function(d) {
        //do something with the data 
        console.dir(d.directories); //d.directories will be an array of strings
    }
});

PHP

//return a JSON object with directories
于 2013-02-28T20:57:10.007 回答
0

这是其他人都在谈论的 PrototypeJS 版本

new Ajax.Request('getdirectories.php',{
    method : 'post',
    onSuccess : function(result){
        //result.responseJSON is the JSON object
        var dirs = result.responseJSON;

        dirs.each(function(item){
            map.showLocations(item+'/file.xml');
        });
    });
于 2013-03-01T04:28:09.703 回答