无法使用Polymer中的iron-ajax响应处理程序检索access_token

时间:2016-10-24 18:52:07

标签: json ajax polymer token polymer-1.0

我在Polymer项目中使用iron-ajax来登录用户。将用户详细信息发送到数据库后,如果登录成功,我需要返回一个令牌。但是,我在回复方面遇到了麻烦。如果有人可以查看我的代码并告诉我我错过了什么,那就太棒了。

当我输出repos属性时,控制台当前返回undefined。下面是我的iron-ajax我的属性的代码以及用户发送详细信息时调用的函数。 另外我添加了我想要返回的内容。

<dom-module id="login-form">
  <template>    
    <iron-ajax
      id="requestUser"
      url="http://api.dev/oauth/token"
      handle-as="json"
      method="POST"
      content-type="application/json"
      body='{
        "grant_type": "password",
        "client_id": 2,
        "client_secret": "KyHacYa2Q7DCTVLaDe1RSnvTlTI20CrmYb7FXujb",
        "username": "user1@test.com",
        "password": "1111",
        "scope": "*"}'
      last-response="handleResponse"></iron-ajax>

    </template>
    <script>

    Polymer({
      is: 'login-form',
      properties: {
        repos: {
          type: Array
        },
      },

      //On-tap loginTheUser runs
      loginTheUser: function() {
        this.$.requestUser.generateRequest();
      },
      handleResponse: function (data) {
        this.repos = data.details.response;
        console.log(this.repos);
      },

   </script>
</dom-module>

以下是我尝试返回的令牌:

{
  "token_type": "Bearer",
  "expires_in": 3155673599,
  "access_token": "eyJ0eXAiOiJKV1...",
  "refresh_token": "271VWcUXisybg="
}

1 个答案:

答案 0 :(得分:0)

<iron-ajax>.lastResponse实际上是Object,表示最后收到的来自AJAX请求的响应。您可以bind到标记中的属性(似乎repos是目标):

<iron-ajax last-response="{{repos}}">

您传递的是方法名称,这意味着您实际上正在尝试为<iron-ajax>.response事件设置处理程序。为此,您可以使用以下内容创建annotated event listener

<iron-ajax on-response="handleResponse">

请注意,如果data.details data.detail dataCustomEvent),您的回复处理程序会错误地尝试阅读public class BaseController : Controller { protected virtual new CustomPrincipal User { get { return HttpContext.User as CustomPrincipal; } ***<== Line with issue*** } }