在不使用javascript知道名称的情况下,将所有xml文件加载到目录中

问题描述

|| 堆 我正在尝试以html动态显示易于编辑的产品页面。我的设置是一堆xml文件(每个产品一个),它们将与它们一起使用的html页面进入同一目录。然后,在页面加载时,它还会读取该目录中的所有xml文件,而这些文件可能会定期更改。 我想用javascript做到这一点,但是我不知道如何在当前目录中开发文件列表。我可以找到的唯一信息涉及在不需要的客户端计算机上查找文件的信息。我需要在当前目录中列出服务器上的所有文件。一旦知道名称,我已经有了用于加载文件的代码,我只需要一个文件名列表即可放入函数中。 一如既往,非常感谢您的帮助。 hom     

解决方法

        好的,这样做打开了pandora的盒子,但同时也提供了许多很酷的功能,以至于不计其数。即使没有PHP,它仍然完全可行... 单程: 在Apache中打开XHTML文件列表。转到您的/etc/apache2/httpd.conf,确保您没有评论
LoadModule autoindex_module libexec/apache2/mod_autoindex.so
以及关闭您可能拥有的所有IndexOptions并将其替换为这些...
IndexOptions XHTML SuppressHTMLPreamble Type=text/xml
重新启动apache,浏览到您配置的VirtualHost ..,您应该有一个样式漂亮的文件列表,其源代码类似于此...
<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<title>Index of /dir/CRUD</title>
</head>
<body>
<h1>Index of /dir/CRUD</h1>
<ul><li><a href=\"/dir/\"> Parent Directory</a></li>
<li><a href=\"CRUD.aspx\"> CRUD.aspx</a></li>

<li><a href=\"CRUD.aspx.cs\"> CRUD.aspx.cs</a></li>
<li><a href=\"member.xml\"> member.xml</a></li>
<li><a href=\"web.config\"> web.config</a></li>
</ul>
<address>Apache/2.2.17 (Unix) PHP/5.3.4 Server at yourserver,net Port 80</address>
</body></html>
如您所见,这是一个相当简单,有效的XML文件,其中包含您要列出的目录。现在,有了XML文件列表,您可以根据需要在样式,解析和处理方面发挥自己的创意……您可以轻松地设置一个自动画廊,该画廊将显示每个文件在文件夹中,也可以使用信息生成一个javascript数组,然后执行无数其他RSS,JSON或具有此功能的函数。 换句话说,不需要对您的Apache IndexOptions进行任何更改,但是确实需要启用它们。 在服务器上创建两个HTML文件... 测试文件
<html>
<head>
<script>
function reload_main() {
  window.main.location.href = \"main.htm\";
}
</script>
</head>
<frameset rows=\"*,1\" onLoad=\"reload_main()\">
<frame src=\"blank.htm\" name=\"main\">
<frame src=\"css/\" name=\"directory\">
</frameset>
</html>
htm
<html>
<body>
<h1>Contents of directory</h1>
<script>
var links_length = parent.directory.window.document.links.length;
var link = \"\";
for (var i = 0; i < links_length ; i++) {
  link = parent.directory.window.document.links[i].href;
  document.write(
    \'<a href=\"\'+link+\'\">\'+link+\'</a><br>\'
  );
}
</script>
<p><a href=\"index.htm\" target=\"_parent\">Return</a>
</body>
</html>
基本上,这将为您提供相同的东西,但将其嵌入到不可见的iFrame中。尽管如此,您仍可以提取后续的“ 5”项并操纵XML以执行所需的任何操作。     ,        最简单的方法是在服务器上有一个脚本,该脚本将文件名作为JSON编码的字符串发送。 此php脚本输出与该脚本位于同一目录中的所有扩展名为.xml的xml文件(只需将
opendir
更改为使用其他路径即可)
<?php
$files = array();

if($handle = opendir(dirname(__FILE__))) {
    while (false !== ($file = readdir($handle))) {
        if(substr($file,-4) == \".xml\")
            $files[] = $file;
    }

    closedir($handle);
}

echo json_encode($files);
?>
然后,您可以在javascript中使用ajax获取json,此处使用jQuery:
$.getJSON(\"http://example.com/path/to/script.php\" function(files) {
    // Do something with the files
});
唯一的其他方法是依靠服务器生成索引(例如apches自动索引),但这会做很多工作。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...