我有一个应用程序,它在一个目录中显示文件(由$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
。有人可以帮我找出如何动态完成这项工作吗?
答案 0 :(得分:0)
问题在于发布到服务器的值 - 它听起来像发送的唯一值是路径中的最后一个节点(例如,路径是../../css/block_styles
并且浏览器正在发送{{1 }})。
如果您希望它发送block_styles
,则浏览器必须知道完整路径。您可能需要从AJAX调用返回完整路径并将其保存在某处,并将其与下一个请求一起发送。
因此,假设用户点击链接(../../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>
值。