无法从数据响应

时间:2017-04-18 14:03:03

标签: angularjs mean-stack

我无法从登录api访问数据的响应访问令牌值请帮助我。

我的代码正在访问来自网址的数据,而响应是来自

的json格式

我的代码是

 authFactory.login = function( username, password ){
 return $http.post('/api/login' , {
            username : username,
            password : password
        })
             .then( function (data) {

            console.log(data);

               AuthToken.setToken(data.token);
               return data;
            })
    }

因此“数据”在浏览器中的响应低于此值。

     Object {data: Object, status: 200, config: Object, statusText: "OK", headers: function}
      config:Object
      data:Object
      message:"successfully login!"
      success:true
      token:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OGY1ZjZlZDhlMzcyMDA4MDhkMmU4NWQiLCJpYXQiOjE0OTI1MjI1OTR9.EkTtneJvBM47LOvMUMh81XYLI_O5oByf1qjWOxliTcs"
   __proto__:Object
   headers:function (name)
   status:200
   statusText:"OK"
   __proto__: Object

如果我正在访问登录api的URL,那么数据将作为

发生
        message:"successfully login!"
        success:true
        token:"eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJfaWQiOiI1OGY1ZjZlZDhlMzcyMDA4MDhkMmU4NWQiLCJpYXQiOjE0OTI1MjI1OTR9.EkTtneJvBM47LOvMUMh81XYLI_O5oByf1qjWOxliTcs"

2 个答案:

答案 0 :(得分:2)

看起来当您处理承诺时,您将回复称为data,尝试将其重命名为response,这更易于人类阅读。 重命名后,您可以在回复response.data下找到数据。

 authFactory.login = function( username, password ){
   var queryParams = {
    'username': username,
    'password': password
   }

   $http.post('/api/login' , queryParams)
  .then(function (response) {
    // replaced data with response, which is more human readable
    console.log(response.data);
    AuthToken.setToken(response.data.token);
    return response.data;
  });
}

答案 1 :(得分:0)

你试过data.json().token吗?

修改
有一次我发现我对响应感到困惑,因为我将其命名为数据,并且响应中包含一个包含数据的对象。

在这种情况下,我必须使用: data.data.token

我希望这也是你的情况:)