聚合物3.0铁ajax返回空响应

时间:2018-12-17 12:52:32

标签: javascript polymer polymer-3.x

我已经很专业地使用了Polymer 1和2,但是直到今天我还没有尝试过Polymer 3.0。我正在尝试测试响应,但无法正常工作。

这是我的铁质ajax组件:

<iron-ajax id="requestData" url="/src/witches-brew-app/requests.json" handle-as="json" 
    last-response="{{requests}}"
    on-response="_requestResponse"
    on-error="_requestError">
</iron-ajax>

我有一个按钮,它调用iron-jax的generateRequest函数,并且您可以看到收到响应时调用的函数。

_requestResponse(e){
    console.info(e);
    console.info(this.requests);
 }

_getRequests(){
    console.info("_getRequests")
    this.$.requestData.generateRequest().then(function (e) {
        console.info("_getRequests PROMISE")
        console.info(this.requests);
    }.bind(this));
}

这个承诺似乎永远不会实现,但是“网络”标签会在Google Chrome浏览器中显示我的所有数据!

Networking tab

_requestResponse函数的确会被触发,但是也会将 requests 属性打印为null。

有什么想法会导致这种情况吗?我无法弄清楚我的一生。我也尝试过使用auto标志,并且得到完全相同的问题。

1 个答案:

答案 0 :(得分:0)

很可能您已在requests属性处接收到数据。但是在上面的代码中,由于检索数据的时间安排,您收到的数据为空。因此,如果您观察到如下所示的属性,则可能会看到iron-ajax收到的数据:

这里是铁ajax DEMO的工作示例

static get properties() { return { 
    requests: { 
       type: Object,
       observer:'_requestResponse'  }
}

_requestResponse(e){
    if (e) {
       console.info(e);
       console.info(this.requests);
    }
}
  • 当然,您需要删除on-response="_requestResponse"

编辑:

static get observers() { return ['_requestResponse(requests)'] }