当我尝试检索对象时,sessionStorage不起作用

时间:2016-09-04 01:20:47

标签: javascript jquery session-storage

我正在使用对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没有工作?

1 个答案:

答案 0 :(得分:0)

正如@nnnnnn在评论中所说,if (isObject(mObj))条件将始终返回false。 mObj是该时间点的字符串。要解决此问题,请在条件之前使用JSON.parse()而不是之后,或使用其他条件。