从ironRequest承诺中检索状态代码

时间:2016-06-24 16:55:25

标签: javascript ajax polymer http-status-codes

使用iron-ajax元素发送ajax请求时,我使用返回的promise,而不是指定on-responseon-error方法,因为它感觉更简单。
但是,当请求失败时,catch处理程序只包含一个错误对象,其中包含"请求失败,状态代码为:403"

我想根据状态代码以不同方式处理错误,但解析错误消息似乎很尴尬。有没有其他方法可以这样做,或者这是要走的路?

var p = elem.generateRequest().completes
p.catch (err) ->
  # How to retrieve http status code?
  # do smth
  return p

1 个答案:

答案 0 :(得分:2)

<iron-ajax>.generateRequest()会返回相应的<iron-request>,您可以从<iron-request>.status获取状态代码:

var req = this.$.ajax.generateRequest();
var p = req.completes;
p.catch(err => {
  console.log('err', err);
  console.log('statusText', req.statusText);
  console.log('status', req.status);
});

HTMLImports.whenReady(function() {
  Polymer({
    is: 'x-foo',
    ready: function() {
      var req = this.$.ajax.generateRequest();
      var p = req.completes;
      p.then(_ => console.log('done'))
       .catch(err => {
        console.log('err', err);
        console.log('statusText', req.statusText);
        console.log('status', req.status);
      });
    }
  });
});
<head>
  <base href="https://polygit.org/polymer+1.5.0/components/">
  <script src="webcomponentsjs/webcomponents-lite.min.js"></script>
  <link rel="import" href="polymer/polymer.html">
  <link rel="import" href="iron-ajax/iron-ajax.html">
</head>
<body>
  <x-foo></x-foo>

  <dom-module id="x-foo">
    <template>
      <iron-ajax id="ajax" url="http://jsonplaceholder.typicode.com/postsx"></iron-ajax>
    </template>
  </dom-module>
</body>

codepen