【发布时间】:2019-03-23 21:10:39
【问题描述】:
我的用例是我写了一个包含 6 个标签的页面。这些选项卡加载我创建的 php 文件索引函数的结果。当我将 USB 驱动器上的文件直接连接到服务器时,一切都很好。在几秒钟内加载页面。但是,我已将文件移动到 NAS 存储驱动器,现在加载页面需要 30-60 多秒。那是因为使用引导选项卡,它会在页面加载时加载所有选项卡。所以它必须在页面完成加载之前加载所有选项卡的所有文件。
我想要做的是让它只加载“当前”标签。我知道我每次都可以使用 $POST 并重新加载页面,但老实说,我认为我真正需要做的是使用 AJAX。但是我发现的示例令人困惑,我无法将它们调整为对我有用。
这就是我想要发生的事情:
- 最初加载页面时标签为“空”。从视觉上看,这已经发生了,因为我的“登陆”页面是一条欢迎消息,顶部的标签链接到相应的索引。
- 单击选项卡时,显示该页面并仅加载该选项卡的文件。通过调用以所需目录为目标并构建文件索引的 PHP 函数来加载文件。所以我想在不重新加载页面本身的情况下“按需”运行 PHP 函数。
以下是引导选项卡链接的示例:
<li class="nav-item">
<a class="nav-link" data-toggle="tab" href="#movies" role="tab">Movies</a>
</li>
我认为我需要做的是在此链接中添加一个onclick,该链接调用一个 AJAX 函数,然后依次调用该选项卡的 PHP 函数,该选项卡将在单击选项卡时显示。
这是我目前在一个标签中运行的代码:
<?php
$allowed = array("mp4", "mkv", "avi", "mov", "mpg", "wmv", "flv", "vob");
$excluded = array("jpg", "nfo", "htaccess", "db");
echo php_file_tree("/smb/movies/", "/movies", "https:xxx[link]",$allowed, $excluded);
unset($allowed, $excluded);
?>
考虑将其封装在这样的函数中:
<?php
function indexmovies() {
$allowed = array("mp4", "mkv", "avi", "mov", "mpg", "wmv", "flv", "vob");
$excluded = array("jpg", "nfo", "htaccess", "db");
echo php_file_tree("/smb/movies/", "/movies", "https:xxx[link]",$allowed, $excluded);
unset($allowed, $excluded);
}
?>
所以,总结一下。我希望页面在加载时只加载 HTML。然后,当单击一个选项卡时,我希望它切换到该选项卡并“按需”加载上述功能。
想要我想做的工作吗?如果是这样,最好的方法是什么?
【问题讨论】:
标签: javascript php jquery html twitter-bootstrap