我正在使用对Web方法的AJAX调用来验证用户,当Web调用返回时,我正在尝试使用此代码用对象填充sessionStorage
,以便我可以访问用户的信息从其他页面:
success: function (r) {
var info = JSON.parse(r.d);
if (info.Reply == 'OK')
{
$('#signinForm').html("<p>You're logged in!</p>");
var MemberObject = { 'MemberName': $('#MemberName').val() };
sessionStorage.setItem('MemberObject', JSON.stringify(MemberObject));
}
},
error: function (r) {
alert(r.responseText);
},
failure: function (r) {
alert(r.responseText);
}
为了测试这个,我在页面顶部添加了这个代码块,通过检索我添加到sessionStorage
的对象,用登录用户的欢迎消息替换登录对话框,但它没有工作:
$(document).ready(function () {
function isObject(val) {
if (val === null) { return false; }
return ((typeof val === 'function') || (typeof val === 'object'));
}
var mObj = sessionStorage.getItem('MemberObject');
if (isObject(mObj))
{
var data = JSON.parse(mObj);
$('signinForm').html("<p>Welcome, " + data.MemberName + "!</p>");
}
为什么sessionStorage
没有工作?
答案 0 :(得分:0)
正如@nnnnnn在评论中所说,if (isObject(mObj))
条件将始终返回false。 mObj是该时间点的字符串。要解决此问题,请在条件之前使用JSON.parse()
而不是之后,或使用其他条件。