【问题标题】:AngularJS: Storing an object in a cookie giving result of [Object Object]AngularJS:将对象存储在 cookie 中,给出 [Object Object] 的结果
【发布时间】:2015-08-20 03:51:13
【问题描述】:

在将此用户对象发送到我的服务时,我试图在 cookie 中存储一组用户凭据 -

this.SetCookie = function (user) {
    $cookies.user = user;
}

但是,当我尝试检索此 cookie 时,我得到的不是一个对象,而是一个显示“[Object Object]”的字符串

我可以将所有用户凭据单独存储在他们自己的 cookie 中,因为我知道我可以做到这一点,但这似乎效率很低?有一个简单的解决方法吗?我为这个问题找到的最佳结果与 JQuery 有关,对我不起作用。

【问题讨论】:

  • 用户是对象,那么你需要在做console.log时使用JSON.stringigy(user)
  • 谢谢,这行得通(减去错字:p),当我取回 cookie 时,我只使用 JSON.parse 将其恢复为对象格式。
  • 我应该添加答案吗?
  • 当然,我会接受的:)
  • 看一下,我已经添加了答案..'

标签: javascript json angularjs object cookies


【解决方案1】:

在 Angular 1.4 中,我发现通过像这样创建 cookie 来存储 JSON 对象:

      var obj = {
        currentUser: {
          username: "testUN",
          authdata: authdata
        }
      };
      $cookies.putObject('cookieName', obj);

允许您像这样取回 cookie:

var cookieWObject = $cookies.getObject('cookieName');

然后得到这样的值:

var username = cookieWObject.currentUser.username;
var authdata = cookieWObject.currentUser.authdata;

【讨论】:

    【解决方案2】:

    您正在直接打印对象,该对象将始终显示[Object Object],因为它包含JSON 的对象,在打印它时它使用警报方法它使用.toString() 方法在控制台中显示它。

    您需要创建JSON.stringify(user),它将所有JSON 对象转换为字符串。使用该对象时,您需要使用 JSON.parse(user) 将对象转换为 JSON

    【讨论】:

      【解决方案3】:
      JSON.stringify(user); //for storing in cookies
      
      JSON.parse($cookies.user); //for converting into an object
      

      【讨论】:

        【解决方案4】:

        对于在 Angular 中使用 cookie,必须在控制器中注入依赖项 'ngCookies' 或在 angular.module('app',[ngCookies]) 中声明,不推荐使用 $cookieStore。

        var app = angular.module('myApp',['ngCookies']);
        app.controller('cookiesController',['$scope','$cookies',function($scope,$cookies){
          //using put method you can add value using key value 
          $cookies.put('Kye','Admin');
          //access cookies value
          console.log($cookies.get('Key'));
          
          //You can add also object in Cookies
          var data = {
                    'name':'admin',
                    'pass':'admin'
                    }
          $cookies.putObject('data',data);
          //access object value
          console.log($cookies.getObject('data'));
          
        
        }]);

        【讨论】:

          猜你喜欢
          • 2019-02-24
          • 2023-02-23
          • 1970-01-01
          • 1970-01-01
          • 2018-07-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多