0

もう一度あなたの助けに頼らなければなりません!

オンラインディレクトリのファイル名をhtml-javascriptの配列に入力しようとしています。これも可能ですか?

ディレクトリはhttp://timeactivitydiary.comyr.com/DATA/なので、返されるファイル名をループしたいのですが

FilesArray[0] = "SampleDataset1";
FilesArray[1] = "SampleDataset2";

どんな助けでも大歓迎です

4

2 に答える 2

1

jquery GET で HTML を取得するのはどうですか。

次に、jquery find を使用して、その HTML で見つかったすべてのリンク要素を取得します (Apache の保護されていないディレクトリは、ディレクトリ ファイルとして A タグを含むリストであるため)。

親ディレクトリのリンクであるため、最後に最初の項目を削除します

$.get('http://timeactivitydiary.comyr.com/DATA/ ', function(data) {

    var $linkElements = $('a');
    var FilesArray = $(data).find($linkElements);
    FilesArray.shift(); 
});

それが役立つことを願っています。

ただし、セキュリティ情報がすべてのユーザーに漏洩するため (つまり、このディレクトリは保護されていません)、適切なユーザーがこれを見つけた場合、HOST サーバーについてさらに質問するようになる可能性があるため、注意が必要です。

このサーバーが適切に安全であることを確認するために、時間をかけてください。Apache は、ここにあるベスト プラクティスに関する簡単なドキュメントを提供しています: http://httpd.apache.org/docs/2.2/misc/security_tips.html

または、GET 要求が呼び出すプロキシ スクリプトを作成し、プロキシ スクリプトがフォルダの内容を返し、クライアント側からサーバー側のチェックに移動することもできます。このようにして、ファイルがどこから来たのか、またはこのディレクトリが保護されていないことを誰も知りません。何かのようなもの:

   $.getJSON('/proxy-script.php', function(data) {
       //jquery code
   });

および proxy-script.php スクリプト:

<?php
   //call file contents 
   $json = json_encode($files_in_folder);

   echo $json;
}
于 2013-01-21T15:55:29.027 に答える
0

純粋な JS では、次のようなことができます。

var xhr = new XMLHttpRequest();
xhr.open('GET', "http://timeactivitydiary.comyr.com/DATA/", false);
xhr.send();
var div = document.createElement("div");
div.innerHTML = xhr.responseText;
var lis = div.getElementsByTagName("ul")[0].getElementsByTagName("li")
var filenames = [];
for(var i = 0;i < lis.length;i++) {
    filenames.push(lis[i].innerText ? lis[i].innerText : lis[i].innerContet);
}
//here you should have a list of all file names

基本的に、ここでは AJAX が使用されます。例は非常に単純化されており、クロスブラウザーではないことに注意してください。クロスブラウザーの ajax リクエストを行う方法を Web で検索するだけです。また、私のコードは同期 ajax リクエストを使用しています。簡単にするために。そのため、リクエストの実行中にインターフェイスがフリーズします。

作成したdivを使用して受信したhtmlを解析するよりも(xhr.responseTextブラウザでページを開いたときに表示されるHTMLが含まれています)。ulその div 内を探して、内でli最初に見つかった s のul 配列を調べて、LIファイル名をそこにプッシュするだけではありません。

jQuery などのライブラリを使用して同じことを行うこともできますが、純粋な JS ソリューションがより複雑であっても、いくつかのライブラリに切り替える前に、純粋な JS がどのように機能するかを知っておく方がよいと思います。

または、別のオプションとして、PHP などのサーバー側言語を使用してサーバー上でその配列を準備することもできます。その場合、ディレクトリのリストを閉じて、現在のユーザーに表示するファイルを制御できます。

于 2013-01-21T16:13:13.750 に答える