2013-01-21 29 views
0

必須再次求助於您的幫助!用在線目錄中的文件列表填充數組

我想在html-javascript中用在線目錄中的文件名填充數組。這甚至有可能嗎?

目錄是http://timeactivitydiary.comyr.com/DATA/所以我想在循環中返回

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

任何幫助,將不勝感激

+1

JavaScript在哪裏執行? – Bergi

+0

Javascript在客戶端機器上執行,因此無法訪問服務器的文件系統。 – George

+0

它在html – user1929624

回答

1

如何jQuery的GET搶HTML文件名。

然後使用jquery find來獲取在該HTML中找到的所有鏈接元素(因爲apache中的未受保護的目錄是帶有A-tags作爲目錄文件的列表)。

最後取出的第一個項目,因爲這是父目錄鏈接

$.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 
    }); 

和代理的script.php腳本:

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

    echo $json; 
} 
+0

內執行嗨,感謝您的幫助。我現在明白了爲什麼我無法在網上找到簡單的答案!可能會超出我的範圍,超出項目的範圍。無論如何,儘管 – user1929624

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請求即可。另外,我的代碼使用同步ajax請求。只是爲了簡單。因爲你的界面在執行請求時會凍結。 (xhr.responseText包含在瀏覽器中打開頁面時看到的HTML)。比我尋找ul裏面的那個div和li的裏面第一次發現ul 比剛剛通過LI s和推入文件名的數組。

您可以使用jQuery或類似的庫來做同樣的事情,但即使純JS解決方案更復雜,我認爲最好在切換到某些庫之前知道純JS是如何工作的。

或者另一種選擇是使用某些服務器端語言(如PHP)在服務器上準備該數組。 在這種情況下,您將能夠關閉目錄列表並控制應向當前用戶顯示哪些文件。

+0

嗨,感謝您的幫助。我現在明白了爲什麼我無法在網上找到簡單的答案!可能會超出我的範圍,超出項目的範圍。不過謝謝 – user1929624