Javascript firefox中的本地存储密钥验证失败
我试图根据本地存储中存在的特定密钥生成html内容。代码如下:Javascript firefox中的本地存储密钥验证失败,javascript,html,local-storage,Javascript,Html,Local Storage,我试图根据本地存储中存在的特定密钥生成html内容。代码如下: // Check if the user is signed in or not if(localStorage.getItem("token") === null) { document.getElementById("main").innerHTML = document.getElementById("welcomeview").innerHTML; } else { d
// Check if the user is signed in or not
if(localStorage.getItem("token") === null) {
document.getElementById("main").innerHTML = document.getElementById("welcomeview").innerHTML;
} else {
document.getElementById("main").innerHTML = document.getElementById("profileview").innerHTML;
}
即使本地存储中未设置令牌密钥,也始终显示纵断面图:
localStorage
Storage { token: "undefined", length: 1 }
为什么?
编辑:
正在使用AJAX请求的响应值设置令牌:
function sign_in() {
var uri, method, formId, $form, form_data;
uri = location.protocol + '//' + location.host + "/sign_in";
method = "POST";
formId = "#signin_form_id";
$form = $(formId);
form_data = get_form_data($form);
// Set-up ajax call
var request = {
url: uri,
type: method,
contentType: "application/json",
accepts: "application/json",
cache: false,
dataType: 'json',
data: form_data
};
// Make the request
$.ajax(request).done(function(data) { // Handle the response
// Attributes are retrieved as object.attribute_name
// alert(obj.count);
if(data.successSignIn === false) {
// Login failed we show the welcome page
alert(data.message);
document.getElementById("main").innerHTML = document.getElementById("welcomeview").innerHTML;
} else {
// Login succeeded. We load the user's info, his messages and also a form in which he can type messages
// Save the token received from the server. Could also be stored as a cookie
localStorage.setItem('token', data.token);
// Go to the home page
go_home();
}
}).fail(function(jqXHR, textStatus, errorThrown) {
console.log(JSON.stringify(jqXHR));
console.log("AJAX error: " + textStatus + ' : ' + errorThrown);
}
);
location.reload();
}
已编辑:对设置项
localStorage.setItem(“token”,typeof undefined==data.token?undefined:data.token)尝试此操作。
。避免使用字符串“未定义”
我建议:
1) 替换为if(localStorage.getItem(“token”){…}
3) 此外,您还可以通过三元运算符进行示例
var welcomeText = document.getElementById("welcomeview").innerHTML,
profileText = document.getElementById("profileview").innerHTML;
document.getElementById("main").innerHTML = (localStorage.getItem("token")) ? welcomeText : profileText
如果
“undefined”==null
始终为false,则永远不会进入部分
在您的情况下,您需要检查if(localStorage.getItem(“token”)==“undefined”)
。令牌键已设置并且是字符串“undefined”
只需替换if(localStorage.getItem(“token”){…}
您也可以尝试if(localStorage中的“token”){…}如何添加/删除密钥?删除密钥的正确方法localStorage.removeItem(密钥);