2014-03-31 88 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