根据预定义路径获取文件路径

时间:2014-03-31 22:40:09

标签: php jquery

我有一个应用程序,它在一个目录中显示文件(由$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);
}

在if中,我将文件的名称附加到起始路径。这仅适用于第一个目录。之后我需要它为每一个人工作。例如,如果有一个名为css的目录,因为起始路径为../../,但当我点击css中的文件夹block_styles时,它会发送{{1}哪个不存在。我需要它发送../../block_styles。有人可以帮我找出如何动态完成这项工作吗?

1 个答案:

答案 0 :(得分:0)

问题在于发布到服务器的值 - 它听起来像发送的唯一值是路径中的最后一个节点(例如,路径是../../css/block_styles并且浏览器正在发送{{1 }})。

如果您希望它发送block_styles,则浏览器必须知道完整路径。您可能需要从AJAX调用返回完整路径并将其保存在某处,并将其与下一个请求一起发送。

编辑:好的,我将尝试扩展这个答案。这里有很多关于你如何做这些假设的假设,因为你的问题中没有足够的细节 - 我不知道HTML是什么样的。

因此,假设用户点击链接(../../css/block_styles标签),可能看起来像这样:

<a>

注意:我不确定HTML是否允许其中包含<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> .字符的ID值 - 如果不允许,请使用{{对其进行编码1}}或您自己的编码方案。

在此示例中,每个文件夹/元素的ID将是它引用的文件夹的完整路径,服务器将接收完整路径。您所要做的就是确保每个base64_encode代码都具有正确的<a>值。