PHP Javascript-保持PHP会话上的本地存储
我(对我来说)有一个奇怪的行为,就是使用PHPPHP Javascript-保持PHP会话上的本地存储,javascript,php,local-storage,session-cookies,Javascript,Php,Local Storage,Session Cookies,我(对我来说)有一个奇怪的行为,就是使用PHPsession\u destroy(),用于注销,使用JSlocalStorage来避免连续的DB ajax请求 是这样。我当前(和工作)的情景: 在登录表单中,PHP执行一个session\u start()->浏览器使用PHPSESSID编写cookie(目前没有localStorage) 登录后,如果localStorage.getItem('myDataItem')==null,则会请求一次数据(ajax)并使用localStorage.se
session\u destroy()
,用于注销,使用JSlocalStorage
来避免连续的DB ajax请求
是这样。我当前(和工作)的情景:
session\u start()
->浏览器使用PHPSESSID
编写cookie(目前没有localStorage
)李>
localStorage.getItem('myDataItem')==null
,则会请求一次数据(ajax)并使用localStorage.setItem('myDataItem','Hi,我是您的ajax响应')
。如果localStorage.getItem('myDataItem')!=空
注意事项李>
代码:
会话\u destroy()
,并执行JSlocation.reload()
并从登录表单重新启动李>
代码:
$("#logout_element").on('click', function(){
$.ajax({
url: 'ajax.php',
type:'post',
data:{request: 'logout'} /*ajax PHP do a session_destroy()*/
})
.done(function(){
location.reload();
});
});
到目前为止,一切(F5/刷新)都是正常的,如果不是注销/会话_destroy()
,本地存储就会消失
我的目标 即使在
会话\u destroy()
最好的
奥斯卡你确定你通过了那个条件吗
(localStorage.getItem('myDataItem')===null
尝试:localStorage.getItem('myDataItem')===undefined
,因为这是JavaScript而不是PHP。@CD001根据文档,getItem()
如果找不到键,则返回null
(我只是在控制台中尝试过,可以确认):PHP对客户端的存储没有影响(但我想你已经知道了)…可能还有其他原因。localStorage
绑定到域;你的页面是否都来自同一来源?在调用location.reload()
之前和之后,可以尝试调试localStorage
的内容?(确保选中该选项以在页面加载之间保留日志)@MátéSafranka好的,Chrome欺骗了我。我在cookie窗口的地址栏左侧进行了检查,我意识到localStorage仅在登录时出现。直到现在,在您回答之后,我才在调试控制台中进行了检查,localStorage对象也保留在注销时。我做了一个非常糟糕的检查!!!这真让人难堪ng.没关系,我只是找错地方了。谢谢你的支持,对不起:(
$("#logout_element").on('click', function(){
$.ajax({
url: 'ajax.php',
type:'post',
data:{request: 'logout'} /*ajax PHP do a session_destroy()*/
})
.done(function(){
location.reload();
});
});