书接上回,在首文件夹(HOME)图标的旁边是回到上级文件夹(UP)和刷新当前文件夹(REFRESH)两个图标,对应的图片链接为:
对应的事件代码为:function onRefresh()
{
var strDirName = "refresh";
var strEncodedName = escape(strDirName);
$.post("query.php", {act:strEncodedName}, function (data) {
$('#spanDirTable').html(data);
});
}
function onUp()
{
var strDirName = "back";
var strEncodedName = escape(strDirName);
$.post("query.php", {act:strEncodedName}, function (data) {
$('#spanDirTable').html(data);
});
}
可以看出,这里在POST时并没有提交需要跳转的文件夹路径,需要根据具体浏览上下文环境获取对应的文件夹。因此,服务器端需要有能力获取当前浏览的文件夹路径。幸好,PHP为我们准备了SESSION。PHP session 变量用于存储有关用户会话的信息,或更改用户会话的设置。Session 变量保存的信息是单一用户的,并且可供应用程序中的所有页面使用。
在您把用户信息存储到 PHP session 中之前,首先必须启动会话。
注释:session_start() 函数必须位于 标签之前:<?php
session_start();
?>
需要注意的是,如果部署了多个网页并且需要共享PHP,则各个网页都需要在开始处使用session_start()。
PHP中使用$_SESSION存取SESSION变量。在上一节输出文件夹内容列表后保存当前浏览的文件夹:if ($isDirContentView)
{
echo createDirContentTable($strDirName);
$_SESSION["currDir"] = $strDirName;
}
这样,就将$strDirName保存到$_SESSION["currDir"]中。
下面这段代码响应刷新文件夹内容的操作:case "refresh":
$isDirContentView = true;
if (isset($_SESSION["currDir"]))
{
$strDirName = $_SESSION["currDir"];
}
else $strDirName = "/home";
break;
如果当前文件夹已保存,则导航至当前文件夹,否则跳转至预设的首文件夹"/home"
下面这段代码则响应回到上一级文件夹的操作:case "back":
$isDirContentView = true;
if (isset($_SESSION["currDir"]))
{
$strDirName = $_SESSION["currDir"];
$strDirName = rtrim($strDirName, "/");
$listDir = explode("/", $strDirName);
$nBackLength = strlen(end($listDir));
$strDirName = substr($strDirName, 0, 0-$nBackLength);
if ($strDirName == "") $strDirName = "/home";
}
else $strDirName = "/home";
break;
上一级目录名是通过分析字符串得到的,并且限制在/home下。
另外,前端可以通过jQuery实现网页打开时预加载首文件夹内容:$(document).ready(function(){
onHome();
});
即当页面加载完成后,执行onHome()函数。