AJAX和PHP根据需要使用RecursiveIteratorIterator获取文件和文件夹列表

用户3771600


我需要从服务器获取文件和文件夹列表。
我不想一次获取所有文件,文件夹,子文件夹。
我想根据需要一点一点地得到他们的。所以我用AJAX。


我使用PHP。我使用RecursiveIteratorIterator。

我没有AJAX做到了,但是我无法使用AJAX做到这一点

它仅适用于第一个目录(〜root目录)。我无法在函数中传递$ name变量。

**不是JQuery !!! **

的PHP

<?php 
if (isset($_GET['you_choose_directory'])){print "do something";}

getList("/start_folder/"); //always(

function getList($name) {
    $path = realpath($name);
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CATCH_GET_CHILD);
    foreach($objects as $name => $object){
        if (filetype($name) == "dir") {
            print "<a href='?you_choose_directory=" . basename($name) . "'><b>" . basename($name) . "</b></a>";
        } else {
            print "<a><div></div><b>" . basename($name) . "</b></a>";
        }
    }
}
?>

JAVASCRIPT

function getXmlHttp(){
  var xmlhttp;
  try {
    xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
    try {
      xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
    } catch (E) {
      xmlhttp = false;
    }
  }
  if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
    xmlhttp = new XMLHttpRequest();
  }
  return xmlhttp;
}

function do_it() {
    var req = getXmlHttp();
    var list = document.getElementById('it_is_files');  
    req.onreadystatechange = function() {
        if (req.readyState == 4) {
            if(req.status == 200) {
                list.innerHTML = req.responseText;
            }
        }
    }
    req.open('GET', 'php.php', true);
    req.send(null);
    list.innerHTML = 'loading...';
}

do_it();

的HTML

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8"/>
    <title>file list</title>
    <script src="javascript.js"></script>
</head>
<body onload="doOnLoad();">
    <div id="it_is_files">

    </div>
</body>
</html>

谢谢。

(我不懂PHP。)

亚光

它仅适用于您的根目录的原因是因为:

print "<a href='?you_choose_directory=" . basename($name) . "'><b>" . basename($name) . "</b></a>";

您正在建立到您所在的html页面的链接,因此该页面将重新加载,一切重新开始。您需要将该标签的href设置为javascript:void,以免重新加载页面。然后,您需要添加一个onClick事件处理函数来调用do_it()函数,并将路径传递到要列出其内容的目录。您将需要更改do_it()以便它可以接受参数。

HTML和javascript:

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="utf-8"/>
    <title>file list</title>
    <script type="text/javascript">

    function getXmlHttp(){
      var xmlhttp;
      try {
        xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (e) {
        try {
          xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (E) {
          xmlhttp = false;
        }
      }
      if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
        xmlhttp = new XMLHttpRequest();
      }
      return xmlhttp;
    }

    function do_it(dirName) {
        var req = getXmlHttp();
        var list = document.getElementById('it_is_files');  
        req.onreadystatechange = function() {
            if (req.readyState == 4) {
                if(req.status == 200) {
                    list.innerHTML = req.responseText;
                }
            }
        }
        req.open('GET', 'getList.php?you_choose_directory=' + dirName, true);
        req.send(null);
        list.innerHTML = 'loading...';
    }

    </script>
</head>
<body onload="do_it('');">
    <div id="it_is_files">

    </div>
</body>
</html>

PHP:

<?php 

$dir = "./"; //default to root directory
if (strlen($_GET['you_choose_directory']) > 0){$dir = $_GET['you_choose_directory'];}
getList($dir);

function getList($name) {
    $path = realpath($name);
    $objects = new RecursiveIteratorIterator(new RecursiveDirectoryIterator($path, FilesystemIterator::SKIP_DOTS), RecursiveIteratorIterator::CATCH_GET_CHILD);
    foreach($objects as $name => $object){
        if (filetype($name) == "dir") {
            print "<br/><a href='javascript:void' onClick='do_it(\"" . $path . "/" . basename($name) . "\")'><b>" . basename($name) . "</b></a>";
        } else {
            print "<br/><a><b>" . basename($name) . "</b></a>";
        }
    }
}

?>

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

需要使用Ansible同步模块同时更改文件夹和文件的权限

来自分类Dev

获取SD卡中的文件夹和文件列表

来自分类Dev

获取SD卡中的文件夹和文件列表

来自分类Dev

获取公共Dropbox文件夹中的文件和文件夹列表并下载文件

来自分类Dev

使用Python和ftplib获取文件夹和文件的最后修改日期

来自分类Dev

如何指定要使用Applescript处理的文件和文件夹的集合?

来自分类Dev

如何使用Python os walk获取子文件夹和文件夹的数量?

来自分类Dev

识别用于对邮件进行分类的模式,然后将邮件移至根据需要创建的文件夹

来自分类Dev

PHP在特定目录中获取exe文件,忽略其他文件和文件夹

来自分类Dev

使用Windows Scheduler运行时无法使用.bat删除和创建文件和文件夹的PHP脚本

来自分类Dev

在JavaScript中获取文件夹和文件列表的最佳方法

来自分类Dev

React-native Google Drive如何获取文件和文件夹列表

来自分类Dev

在JavaScript中获取文件夹和文件列表的最佳方法

来自分类Dev

在Android源包中获取子文件夹名称和文件名称的列表

来自分类Dev

Unix / Mac OS X:使用文件列表复制文件和文件夹,并保持目录结构

来自分类Dev

使用Powershell获取包含vb文件的文件夹列表

来自分类Dev

如何获取子文件夹的文件列表,并使用php将其写入JSON?

来自分类Dev

使用 txt 文件支持搜索和替换文件和文件夹名称

来自分类Dev

cd显示macOS中的文件和文件夹列表

来自分类Dev

无法从文件和文件夹列表中同步

来自分类Dev

获取文件夹中的列表文件

来自分类Dev

Powershell获取目录中文件和文件夹的数量

来自分类Dev

获取文件ID和文件夹ID

来自分类Dev

获取GDrive中文件和文件夹之间的连接

来自分类Dev

如何使用Boost和C ++递归和分别列出文件和文件夹

来自分类Dev

从资产文件夹获取文件夹列表

来自分类Dev

如何使用JavaScript从路径获取最后的文件夹名称和文件名?

来自分类Dev

搜索和替换文件和文件夹名称

来自分类Dev

PHP函数列出文件夹和文件,但检测何时是文件夹或文件

Related 相关文章

  1. 1

    需要使用Ansible同步模块同时更改文件夹和文件的权限

  2. 2

    获取SD卡中的文件夹和文件列表

  3. 3

    获取SD卡中的文件夹和文件列表

  4. 4

    获取公共Dropbox文件夹中的文件和文件夹列表并下载文件

  5. 5

    使用Python和ftplib获取文件夹和文件的最后修改日期

  6. 6

    如何指定要使用Applescript处理的文件和文件夹的集合?

  7. 7

    如何使用Python os walk获取子文件夹和文件夹的数量?

  8. 8

    识别用于对邮件进行分类的模式,然后将邮件移至根据需要创建的文件夹

  9. 9

    PHP在特定目录中获取exe文件,忽略其他文件和文件夹

  10. 10

    使用Windows Scheduler运行时无法使用.bat删除和创建文件和文件夹的PHP脚本

  11. 11

    在JavaScript中获取文件夹和文件列表的最佳方法

  12. 12

    React-native Google Drive如何获取文件和文件夹列表

  13. 13

    在JavaScript中获取文件夹和文件列表的最佳方法

  14. 14

    在Android源包中获取子文件夹名称和文件名称的列表

  15. 15

    Unix / Mac OS X:使用文件列表复制文件和文件夹,并保持目录结构

  16. 16

    使用Powershell获取包含vb文件的文件夹列表

  17. 17

    如何获取子文件夹的文件列表,并使用php将其写入JSON?

  18. 18

    使用 txt 文件支持搜索和替换文件和文件夹名称

  19. 19

    cd显示macOS中的文件和文件夹列表

  20. 20

    无法从文件和文件夹列表中同步

  21. 21

    获取文件夹中的列表文件

  22. 22

    Powershell获取目录中文件和文件夹的数量

  23. 23

    获取文件ID和文件夹ID

  24. 24

    获取GDrive中文件和文件夹之间的连接

  25. 25

    如何使用Boost和C ++递归和分别列出文件和文件夹

  26. 26

    从资产文件夹获取文件夹列表

  27. 27

    如何使用JavaScript从路径获取最后的文件夹名称和文件名?

  28. 28

    搜索和替换文件和文件夹名称

  29. 29

    PHP函数列出文件夹和文件,但检测何时是文件夹或文件

热门标签

归档