2013-02-28 6 views
0

На моем веб-сервере У меня есть несколько каталогов с файлами в них нравится:Как перечислить все папки на сервере с PHP и JavaScript

  • afolder/file.xml
  • anotherfolder/file.xml
  • stillanother/file.xml

Файлы содержат информацию о некоторых местоположениях, которые я хочу показать на Карте (с openlayers), поэтому мне нужны файлы в JS. Проблема в том, что я не знаю, как вызывается список и сколько из них есть, поэтому мне нужен список из них.

мне нужно что-то вроде этого:

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

Как это может быть сделано?

Я искал решение, но все, что я нашел, было о файлах и папках на стороне клиента. Я использую прототип js и можно использовать PHP.

+5

Это немного опасно , Вы действительно не хотите, чтобы ваши браузеры искали каталоги серверов. Почему бы не иметь веб-службу, которая возвращает все файлы? –

+7

вы захотите сделать это в php, а не в javascript. JS работает на клиенте, ваши файлы находятся на сервере. –

+0

Вы используете JavaScript на своем сервере? –

ответ

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(); 
?> 
+1

Хорошо спасибо! Я никогда не использовал ajax раньше, но всегда есть первый раз :) Обязательно проверьте прототип документа для синтаксиса exakt, но спасибо за общий подход! – JHnet

0

я просто должен был сделать это около 2 часов назад для моей работы. Я использовал jQuery plugin from A Beautiful Site called jQuery File Tree.

Если вы просто хотите получить данные в JavaScript, то этот плагин пользовательского интерфейса может быть чрезмерным, но он содержит исходный код, который будет возвращать 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 
+0

Хорошо спасибо! Я никогда не использовал ajax раньше, но всегда есть первый раз :) Обязательно проверьте прототип документа для синтаксиса exakt, но спасибо за общий подход! – JHnet

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'); 
     }); 
    }); 
Смежные вопросы