我的用例是我有一个用6个选项卡编写的页面。这些选项卡加载我创建的php文件索引功能的结果。当我将USB驱动器上的文件直接连接到服务器时,一切都很好。以秒为单位加载页面。但是,我已将文件移至NAS存储驱动器,并且现在需要30-60秒钟以上的时间才能加载页面。这是因为使用引导程序选项卡时,它会在页面加载时加载所有选项卡。因此,必须在页面完成加载之前为所有选项卡加载所有文件。
我想要做的是仅加载“当前”标签。我知道每次都可以使用$ POST并重新加载页面,但是老实说,我认为我真正需要做的是使用AJAX。但是我发现的示例令人困惑,并且我很难对它们进行调整以对我有用。
这就是我想要发生的事情:
这是引导标签链接的示例:
<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。然后,当单击一个选项卡时,我希望它切换到该选项卡并“按需”加载上述功能。
我要工作吗?如果是这样,最好的解决方法是什么?
答案 0 :(得分:0)
我将Jquery UI用于该标签。
<div id="tabs">
<ul>
<li><a href="#tabs-1">Tab 1</a>
</li>
<li><a href="#tabs-2">Tab 2</a>
</li>
<li><a href="#tabs-3">Tab 3</a>
</li>
</ul>
<div id="tabs-1">
<p>Content for Tab 1</p>
</div>
<div id="tabs-2">
<p>Content for Tab 2</p>
</div>
<div id="tabs-3">
<p>Content for Tab 3</p>
</div>
</div>
body {
background-color: #eef;
}
#tabs {
width: 95%;
margin-left: auto;
margin-right: auto;
margin-top: 10px;
}
$("#tabs").tabs({
activate: function (event, ui) {
var active = $('#tabs').tabs('option', 'active');
if(active == '0'){
alert('the tab is 0')
//put your ajax for this tab 0
}
else if(active == '1')
{
alert('the tab is 1')
//put your ajax for this tab 1
}
else if(active == '2')
{
alert('the tab is 2')
//put your ajax for this tab 2
}
}
});
这是Jsfiddle(最好的问候)。