0

私のWebサーバーには、次のようなファイルを含むいくつかのディレクトリがあります。

  • afolder/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);
}

もう1つのオプションは、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 プラグインはやり過ぎかもしれませんが、jQuery.ajax リクエストを呼び出すことで取得できるパスのリストを含む JSON を返すソース コードが含まれています。

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 に答える