我使用Bootstrap,我想在会话变量PHP(不在cookie中)中保存当前的崩溃状态(打开或关闭)。
你可以给我: - 将当前状态保存在会话变量PHP中的示例代码。 - 以及在页面加载时打开或不打开崩溃的示例代码(取决于存储在会话变量中的状态)。非常感谢
答案 0 :(得分:1)
首先,你真的需要将它存储到会话中吗?某些PHP脚本是否与该值一起使用?
两种情况:
您必须在JavaScript变量中的某处存储折叠项的状态:
var collapsed = false; // the default value
$('.collapse').on('hide.bs.collapse', function () {
collapsed = true; // on hide, collapsed is true
})
$('.collapse').on('show.bs.collapse', function () {
collapsed = false; // on show, collapsed is false
})
是的,我需要将其存储到会话中:
在每个请求中,您必须添加折叠变量并将其传递给例如trhough GET方法:
$('a').on('mousedown', function() {
var c = collapsed ? 1 : 0;
var href = $(this).attr('href');
if(href.indexOf('?') !== -1) {
$(this).attr('href', href + '&collapsed=' + c);
else {
$(this).attr('href', href + '?collapsed=' + c);
}
});
并以某种方式将其保存到会话
$_SESSION['collapsed'] = $_GET['collapsed'];
不,我不需要存入会话:
现在大多数现代浏览器都有localStorage变量,类似于JavaScript中的会话。
保存到变量中(例如在事件处理程序中):
if(typeof(Storage)!=="undefined")
{
window.localStorage.setItem('collapsed', collapsed); // saves with no expiration
code.sessionStorage.setItem('collapsed', collapsed); // saves until browser is closed
}
else
{
// Sorry! No Storage support..
}
加载一些启动脚本:
if(typeof(Storage)!=="undefined")
{
collapsed = window.localStorage.getItem('collapsed'); // again choose one
collapsed = code.sessionStorage.getItem('collapsed');
if(collapsed) {
$('.collapse').collapse('show');
} else {
$('.collapse').collapse('hide');
}
}
else
{
// Sorry! No Storage support..
}
可能还有其他解决方案,但这些是我能想到的唯一解决方案。 :)
所有代码都需要jQuery
答案 1 :(得分:0)
我会在PHP方面做类似的事情。它允许存储和检索多个ID的状态:s。会话处理不包括在内;这些函数假设有一个活动的会话。此外,函数是静态的,因为没有实际需要实例化类。它使用起来更简单。
class Collapse
{
public static function set_state($id = null, $state = null)
{
if ($id === null || $state === null || !is_numeric($state)) {
return false;
} else {
$state = ($state == 0 ? 0 : 1);
$_SESSION['collapse_state'][$id] = $state;
}
}
public static function state($id = null)
{
if ($id === null) {
return false;
} else {
return $_SESSION['collapse_state'][$id];
}
}
}
// --- Sets the state for chosen ID.
Collapse::set_state('info', 0);
// --- Returns the state of the ID.
Collapse::state('info');
将此课程与TomášTomííkBlatnn提出的JavaScript一起使用,您将能够保存您的州。我可能会使用POST而不是GET,以使URL:s看起来更好一些。这可以通过填充隐藏的表单字段或通过向仅处理折叠状态的PHP脚本发送AJAX请求来完成。