Jquery 从localhost中的第二个窗口登录时,LocalStorage中的数据将被覆盖
当使用submitindex.html时,我执行以下ajax操作,我需要将用户数据保存到localStorage,因为我重定向到另一个路由,它不会有数据,除非。这一切都很好,但当我在新的localhost窗口中打开页面并再次登录时,localStorage中的旧数据将被覆盖 为什么会这样Jquery 从localhost中的第二个窗口登录时,LocalStorage中的数据将被覆盖,jquery,redirect,local-storage,Jquery,Redirect,Local Storage,当使用submitindex.html时,我执行以下ajax操作,我需要将用户数据保存到localStorage,因为我重定向到另一个路由,它不会有数据,除非。这一切都很好,但当我在新的localhost窗口中打开页面并再次登录时,localStorage中的旧数据将被覆盖 为什么会这样 // Login index.js $('#frm-login').submit(function (e) { event.preventDefault() $('button').text(
// Login index.js
$('#frm-login').submit(function (e) {
event.preventDefault()
$('button').text('Please wait ...').prop('disabled')
$.ajax({
url: "/login-user",
type: "POST",
data: $('#frm-login').serialize(),
dataType: "json"
}).always(function (response) {
$('button').text('Logging in').prop('disabled')
console.log("Login", response)
if (response.status == "error") {
$('button').removeClass('lime').addClass('red').text('Log in failed. Try again.');
return
}
if (response.token) {
localStorage.setItem('token', response.token);
console.log(localStorage.token)
if (localStorage.token) {
$.ajax({
type: "GET",
url: "/verify-user",
headers: {
'Authorization': 'Bearer ' + localStorage.token
},
dataType: "json"
}).always(function (response) {
console.log("Auth", response)
if (response.status == "error") {
$('button').removeClass('lime').addClass('red').text('Log in failed. Try again.');
return
}
if (response.status == 302) {
console.log(response)
$jUser = response.responseJSON.authData.user
$sjUser = JSON.stringify($jUser);
localStorage.setItem('user', $sjUser);
$(location).attr('pathname', '/LIMELine/chatroom/')
}
})
}
}
})
})
从localStorage main.js获取数据
localStorage在给定域的所有选项卡上共享。如果不希望出现这种情况,可以改用sessionStorage。但是,作为使用sessionStorage的副作用,当与数据关联的窗口/标记关闭时,数据将被销毁
只读localStorage属性允许您访问文档来源的存储对象;存储的数据跨浏览器会话保存。localStorage与sessionStorage类似,不同之处在于,虽然localStorage中存储的数据没有过期时间,但当页面会话结束时(即页面关闭时),sessionStorage中存储的数据将被清除
sessionStorage属性允许您访问当前源的会话存储对象。会话存储类似于Window.localStorage;唯一的区别是,虽然localStorage中存储的数据没有过期设置,但当页面会话结束时,sessionStorage中存储的数据将被清除。只要浏览器处于打开状态,页面会话就会持续,并且在页面重新加载和恢复过程中仍然有效。在新选项卡或窗口中打开页面将导致启动新会话,这与会话cookie的工作方式不同
非常感谢。我真的不知道他们之间的区别。还有其他区别吗?这些是我所知道的主要区别。localStorage您可以将sorta视为Cookie的替代品。会话存储相同,但范围和寿命较小。
$jUser = JSON.parse(localStorage.user)
$('#frame #sidepanel #profile-img').attr('src', $jUser.avatar)
$('#frame #sidepanel #profile .wrap #full-name').text($jUser.first_name + ' ' + $jUser.last_name)