我的服务器上有一个如下所示的文件结构:
我的问题相对复杂:如何填充<select>
html 标签逐渐从服务器的子文件的内容中获取。
例如,下面我有 3 <select>
镜像上面显示的文件结构的标签。当第一个选择更改时,jQuery 应该使用 AJAX 和 PHP 找到服务器上的该目录,并将所有子文件列出到第二个 <select>
中。 。单击第二个时,应列出该文件夹的所有子文件,依此类推。最终我想要 5 <select>
标签。
我认为最好使用 jQuery 来实现这一点,它可以检测选择中的更改:
$("select").change(function() {
var selected = $(this).children("option:selected").text();
});
将该变量发送到 AJAX,AJAX 要求 PHP 文件返回该文件夹的子文件数组,并使用该数组中的数据填充下一个选择。我不太有信心的是 PHP。
我尝试过的:查看 TreeView系统 - 不适合。尝试修改TreeView与选择一起工作的系统 - 无结果!也许有人可以尝试修改我链接的链接?
提前致谢,我们将一如既往地感谢任何帮助!
最佳答案
使用文件夹目录填充选择选项值:
<div class="selects">
<select name="folder1">
<option value="folder1">folder1</option>
<option value="folder2">folder2</option>
<option value="folder3">folder3</option>
</select>
</div>
jQuery:
// Use live. Because the other selects will be filled with jquery.
$("select").live("change", function() {
var folder = $(this).val();
var select_id = $(this).attr("name").replace('folder', '');
$.ajax({
url: 'ajax.php',
type: "POST",
data: {"folder": folder},
success: function(data) {
var select = $("<select>");
select_id++;
select.attr("name", "folder"+select_id).append(data);
$(".selects").append(select);
}
});
});
PHP:
<?php
$shared = "some/path/to/shared/folders/";
$folder = $_POST['folder'];
$scan = scandir($shared.$folder);
$bad = array(".", "..", ".DS_Store", "_notes", "Thumbs.db");
$scan = array_diff($scan, $bad);
foreach ($scan as $val)
{
if (is_dir($shared.$folder.'/'.$val))
echo '<option value="'.$folder.'/'.$val.'">'.$val.'</option>';
}
?>
我没有测试它,可能会有一些拼写错误,但这应该可以解决问题
关于php - 从服务器目录填充选择 PHP jQuery AJAX,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10547038/