2014-03-31 94 views
0

我有一個應用程序可以顯示目錄中的文件(由$starting_file_path定義),並且當一個目錄被點擊時,我使用jquery到$.post()返回頁面的鏈接並附加給我的內容點擊目錄的內容。一切工作到目前爲止。唯一的問題是這隻能在一個目錄深入。如果我嘗試點擊新添加的列表中的目錄,它不會執行任何操作。我知道這是爲什麼,因爲路徑不正確。我無法找到一種方法來根據已經預先定義的父路徑獲取路徑。獲取基於預定義路徑的文件路徑

這裏是哪裏的道路是link僅僅是目錄

include "../app/bootstrap.php"; 
include "../src/controllers/DisplayContentsController.php"; 

$data = new DisplayContentsController(); 
$link = (isset($_POST['link']) ? $_POST['link'] : null); 

if ($link != null) 
{ 
    $data->show($twig, $starting_file_path . '/' . $link); 
} 
else 
{ 
    $data->show($twig, $starting_file_path); 
} 

的名稱,如果是我追加文件起始路徑的名稱。這隻適用於第一個目錄。之後我需要它爲每一個人工作。因此,舉例來說,如果有一個名爲css的目錄,因爲起始路徑是../../,但當我點擊css內的文件夾時,如block_styles,它會發送不存在的../../block_styles。我需要它發送../../css/block_styles。有人能幫我找出如何動態地完成這項工作嗎?

回答

0

問題在於發佈到服務器的值 - 它聽起來像是發送的唯一值是路徑中的最後一個節點(例如路徑是../../css/block_styles,瀏覽器正在發送block_styles)。

如果你想要它發送../../css/block_styles,那麼瀏覽器必須知道完整的路徑。您可能需要從AJAX調用中返回完整路徑並將其保存在某處,並將其與下一個請求一起發送。

編輯:好吧,我要試着擴大這個答案。這裏有很多關於你如何做這件事的假設,因爲你的問題沒有足夠的細節 - 我不知道HTML的樣子。

因此,假設用戶點擊鏈接(<a>標籤),它可能是這個樣子:

<a class="folder" id="../../css">css</a> 

<script> 

    $("a.folder").on("click", function(event){ 
     // get the path from the ID of the clicked element 
     var path = $(event.currentTarget).attr("id"); 

     // do your AJAX POST, pass the path value, and update 
     // the DOM accordingly... 
     $.post(...); 
    }); 
</script> 

注意:我不知道,如果HTML將允許這樣的ID值與./中的字符 - 如果不是,則使用base64_encode或您自己的編碼方案對其進行編碼。

在此示例中,每個文件夾<a>元素的ID將爲其引用的文件夾的完整路徑,並且服務器將接收完整路徑。您所要做的就是確保每個<a>標籤都具有正確的id值。

+0

好吧你有什麼想法,我可以保存在這裏嗎?有沒有辦法獲得父目錄,只是追加它? – zachstarnes