情况是这样的:我有4个文件夹,每个文件夹里面都有一堆文件。
我在Php文件操作工作。我想,创建一个动态的形式,一旦被选中的文件夹,以填补与该文件夹内的文件列表的另一个下拉列表。
这是表单的第一部分,用户可以在这里选择一个文件夹:
<select name="origin">
<option value="folder">Folder</option>
<option value="folder2">Folder2</option>
<option value="folder3">Folder3</option>
<option value="folder4">Folder4</option>
</select>
如何创建另一个下拉列表?
非常感谢!
您需要两件事:
- PHP文件,它将输出文件列表jQuery代码显示结果使用AJAX
试试这个,请随时问我解释:
- PHP代码:命名为
listfiles.php
$dir = $_GET["dir"];
$files = scandir($dir);
// Prepare the select box to echo
echo "<select name='"files'">";
foreach ($files as $file)
{
// Return files only
if ( is_file($dir. $file) )
echo "<option value='"$file'">$file</option>";
}
echo "</select>";
- jQuery代码可以用于任何文件,只需创建一个新的html或php文件与此代码:
listfiles.html
<select id="folder" name="origin">
<option value="C:'">C:'</option>
<option value="D:'">D:'</option>
</select>
<div id="files"></div>
<script type="text/javascript">
$(document).ready(function()
{
//Bind a change event to the folder selector
$("#folder").change(function()
{
var dir = $(this).val();
$.get("listfiles.php", {"dir":dir}, function(response){
//Show the files
$("#files").html(response);
});
});
});
</script>
为使脚本工作,文件夹的选择框中应提供完整且有效的文件夹名称
使用jQuery(或者只是普通的javascript,如果你愿意),你可以绑定一个函数到下拉菜单上的更改事件。然后使用AJAX调用服务器上的一个文件,并返回一个包含所有文件的JSON格式字符串,并由此创建一个下拉列表。要获取所有文件,可以使用PHP函数scandir.
这个过程需要四个步骤:
- 当选择一个值时,通过AJAX将文件夹名称提交给PHP脚本。
- 扫描目录中的文件,并将列表作为JSON响应返回
- 用Javascript创建一个新的
<select>
。 - 通过Javascript读取响应并为响应中的每个项目生成一个新的
<option>
元素。