【问题标题】:Polymer 3.0 iron-ajax returning null responsePolymer 3.0 iron-ajax 返回空响应
【发布时间】:2018-12-17 12:52:32
【问题描述】:

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

这是我的 Iron-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));
}

承诺似乎永远不会回来,但网络标签显示了我在谷歌浏览器中的所有数据!

Networking tab

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

知道是什么原因造成的吗?我这辈子都想不通。我也用自动标志尝试过,我得到了完全相同的问题。

【问题讨论】:

标签: javascript polymer polymer-3.x


【解决方案1】:

您很可能在requests 属性中收到了数据。但是在上面的代码中,由于检索数据的时间,您收到了 null。因此,如果您观察以下属性,您可能会看到iron-ajax 收到的数据:

这里是 iron-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)'] }

【讨论】:

  • 我尝试添加一个观察者,不幸的是没有奏效。但是,我查看了您的演示,使用相同的 URL 并且它有效。似乎是使用 Iron-ajax 请求本地 json 文件的问题。
  • 观察者应该可以工作,或者尝试观察者选项,我将在上面进行编辑。另外,请检查路径名,因为我认为它很可能是错误的定义。请让我知道文件的位置(称为铁 ajax)
  • 我现在已经设法让它工作了!有趣的是,在恢复我的进度之后,你提出的建议我似乎无法再次打破它。我确实从使用 Cygwin64 终端切换到 Windows 命令行进行服务,但现在两者都可以使用。无论如何,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-07-01
  • 2018-06-08
  • 2013-01-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多