2016-09-04 9 views
0

WebメソッドへのAJAX呼び出しを使用してユーザーを検証していて、Web呼び出しが返ってくると、このコードを使用してsessionStorageにオブジェクト私はその後、他のページからユーザーの情報にアクセスすることができます。オブジェクトを取得しようとしたときに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はなぜ機能しませんか?

+2

'if(isObject(mObj))'は常に 'false'になりませんか?ストレージから取得する項目は文字列になります。 – nnnnnn

+0

どのコードが最初に実行されていますか?あなたのコードから、私は 'var mObj = sessionStorage.getItem( 'MemberObject');'は、値がセッション記憶域に設定されているajax呼び出しの前に起こると思います。 – Developer

+0

または、あなたは '$( 'signinForm')。html'で#を逃しましたか?そして、@nnnnnnが言ったように、この場合のtypeof valは文字列です。 – Developer

答えて

0

@nnnnnnがコメント内で述べたように、if (isObject(mObj))の条件は常にfalseを返します。 mObjは、その時点の文字列です。この問題を解決するには、条件の前ではなく条件の前にJSON.parse()を使用するか、別の条件を使用します。

関連する問題