AngularJS:在cookie中存储对象,给出[Object Object]的结果

时间:2015-06-05 08:59:42

标签: javascript json angularjs object cookies

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

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

然而,当我尝试检索此cookie时,我得到的是一个对象,但只是一个字符串,表示" [Object Object]"

我可以将所有用户凭据分别存储在自己的cookie中,因为我知道我可以做到这一点,但看起来效率很低?这有一个简单的解决方案吗?我发现这个问题的最高结果与JQuery有关,但对我来说没有用。

4 个答案:

答案 0 :(得分:39)

在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;




答案 1 :(得分:11)

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

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

答案 2 :(得分:2)

在angular中使用cookies必须在控制器中注入依赖项'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'));
  

}]);

答案 3 :(得分:1)

JSON.stringify(user); //for storing in cookies

JSON.parse($cookies.user); //for converting into an object