javascript - Javascript 文件之间无法访问窗口变量
问题描述
我有两个 javascript 文件来处理我的网页登录功能。第一个 js 文件对用户进行身份验证并返回一个会话令牌,该令牌应传递给第二个 js 文件以进行会话验证。
这是第一个js文件的片段。
var Login = window.Login || {};
(function scopeWrapper($) {
var apiEndPoint = 'https://4pmsdffwl2.execute-api.ap-southeast-2.amazonaws.com/prod';
Login.sessionId = 'null'
function signin(username, password, onSuccess, onFailure) {
let endpoint = apiEndPoint + '/signin'
let config = {
"username": username,
"password": password
}
return axios.post(endpoint, config)
.then((res) => {
Login.sessionId = res.session_id
console.log(Login.sessionId) \\this prints the session id correctly
onSuccess(res);
return Promise.resolve('/')
})
.catch((err) => {
console.error(err)
onFailure(err)
return Promise.reject('/')
})
}
$(function onDocReady() {
$('#signinForm').submit(handleSignin);
});
function handleSignin(event) {
var email = $('#emailInputSignin').val().toLowerCase();
var username = email;
var password = $('#passwordInputSignin').val();
event.preventDefault();
signin(username, password, email,
function signinSuccess() {
console.log('Successfully Logged In');
window.location.href = 'second.html';
},
function signinError(err) {
alert(err);
}
);
}
}(jQuery));
这个想法是启动一个全局变量sessionId,它通过登录函数使用会话 ID 进行更新。
这是我尝试使用从第一个 js 文件传入的 sessionId 的第二个 js 文件的片段。
var Login = window.Login || {};
Login.map = Login.map || {};
(function uploadScopeWrapper($) {
console.log(Login.sessionId) \\This prints null instead of sessionId
if (Login.sessionId) {
window.location.href = 'welcome.html';
} else {
window.location.href = 'login.html';
}
}(jQuery));
我不太确定为什么窗口对象没有使用登录函数中生成的 sessionId 进行更新。
plnkr 中的示例代码: https ://plnkr.co/bYECNY
任何帮助深表感谢。
谢谢
解决方案
您正在导航到不同的页面,然后从该不同的页面加载第二个脚本文件。
当您导航到不同页面、同一页面或仅刷新当前页面时,所有全局变量都会丢失。
有关将信息存储时间超过当前文档加载到浏览器中的方法,请参阅在页面加载之间保持变量
推荐阅读
- lwjgl - GLFW 中的平滑触摸板滚动
- php - 用于教育目的的小型 PHP 运行时(解释器)
- javascript - jQuery重构,如何为此制作简单的短代码
- postgresql - 如何处理 Kafka 中的动态消息值?
- pandas - 如何根据其他两列的值设置列?
- excel - 根据数量将复制整行更改为复制范围
- python - 烧瓶中的 Exception.TemplateSyntaxError
- java - 如何按列和行在for循环中添加到矩形数组
- angular - 如何使用按钮将 JSON 数据复制到剪贴板
- objective-c - 知道何时从 Xamarin 抛出 NSException