我有以下代码来获取文件夹的目录,
<?php
$path = 'templates';
$files = scandir($path);
foreach($files as $result) {
if ($result != "." && $result != ".." && $result != "desktop.ini")
{
echo '<img src="img/folder.png" width="40px"><a name="'.$result.'" class = "folderLink" href="#">'.$result.'</a> <input type="hidden" name="'.$result.'" value="'.$result.'"></img><br><div class="fileListInner"></div>';
}
}
?>
以上代码返回动态文件夹名称数。此代码工作正常,并在成功时显示文件夹列表。这是我的表格,
<form id="t-files">
<a style="margin-left:160px;" class="list-directories" href="#">Select File Path</a><br><br>
<div id="fileList"></div>
</form>
现在我想进入每个文件夹并列出子文件夹。要做到这一点,我得到每个链接的类名,并点击甚至调用ajax函数。这是代码,
// load directories - inner (settings)
$(document).on("click",".folderLink",function(e){
e.preventDefault();
$.ajax({
type: 'post',
url: 'list-directories-inner.php',
dataType: 'text',
data: $('#t-files').serialize(),
success: function (data) {
$('#fileList').html(data);
}
});
exit();
});
list-directories-inner.php文件,
<?php
foreach ($_POST as $key => $value){
echo "".$key."<br>";
}
$path = 'templates';
$files = scandir($path);
foreach($files as $result) {
if ($result != "." && $result != ".." && $result != "desktop.ini")
{
// echo '<img src="img/folder.png" width="40px"><a href="#">'.$result.'</a></img><br>';
}
}
?>
如何通过点击链接(隐藏输入)名称值而不是传递所有隐藏值?因为在list-directories-inner.php文件中我想获得点击的链接值来设置路径。类似于&#39;模板/帖子价值&#39;。我想了几个小时。请帮忙。
答案 0 :(得分:1)
不确定您说的是哪个链接,但我收集了以下内容:
<img src="img/folder.png" width="40px"><a name="'.$result.'" class = "folderLink" href="#">'.$result.'</a> <input type="hidden" name="'.$result.'" value="'.$result.'"></img><br><div class="fileListInner"></div>
如果是这样,您可以将$result
值作为数据属性添加到链接中,以便:
<img src="img/folder.png" width="40px" /><a name="'.$result.'" class = "folderLink" href="#" data-path="'.$result.'">'.$result.'</a><br><div class="fileListInner"></div>
注意data-path
属性。然后获取click事件的值。
$(document).on("click",".folderLink",function(e){
e.preventDefault();
var path = $(this).data('path');
getInnerDirectoryList(path);
});
function getInnerDirectoryList(path){
$.ajax({
type: 'post',
url: 'list-directories-inner.php',
dataType: 'text',
data: {path_url: path},
success: function (data) {...},
error: function(msg){....}
});
}
可能有类似上面的内容吗?
这是一个简单版本的jsbin: https://jsbin.com/yajefi/edit?html,js,output
答案 1 :(得分:0)
你应该尝试声明一个函数,该函数获取所包含所需字段的clicked文件夹的输入id,而不是每次点击.folderLink类时调用的泛型函数。
答案 2 :(得分:0)
西蒙的回答应该有效,但这是另一种选择。
您可以像这样获取隐藏输入的值(因为它与隐藏输入的名称相同)。
$(document).on("click",".folderLink",function(e){
var folder = $(this).siblings('input:hidden').val();
e.preventDefault();
$.ajax({
type: 'post',
url: 'list-directories-inner.php',
dataType: 'text',
data: {folder: folder},
success: function (data) {
$('#fileList').html(data);
}
});
});