铁请求不会发出多个请求

时间:2017-06-29 22:43:42

标签: javascript ajax polymer polymer-2.x

我正在使用Polymer 2库。每当我尝试使用iron-request发出多个请求时,代码似乎只会在第一次启动时发出POST请求。即使设置为发送到服务器的数据与初始请求不同,任何后续请求似乎都会被忽略。

我在这个Plunker中写了一个小例子:https://plnkr.co/edit/cozVKUdQ2q2SV46rcCTL?p=preview

我创建了一个铁请求和一个按钮元素来启动请求,如下所示:

map! {|item| block } → ary

保存功能设置为从文本区域获取文本并将其发送到服务器。

<paper-button on-click="save" class="green">Send</paper-button>
...
<iron-request id="xhr"></iron-request>

有问题的代码在&#34; element1.html&#34;文件。如果您尝试发送不同的文本有效负载,则只会发送第一个请求。 (您可以在响应框中看到表单&#34; content&#34;字段保持不变。)

知道发生了什么事吗?我认为每次我需要提出新请求时都必须创建新的铁请求元素......但这听起来并不是一个非常优雅的解决方案。

1 个答案:

答案 0 :(得分:2)

如您所料,iron-request已构建为发送单个HTTP请求。我快速浏览了它的实现。如果请求的状态大于0,则send方法实际上只会返回null并且不会执行任何操作,如果您之前使用过,则会出现这种情况。

虽然您可以为每个请求创建一个新的iron-request元素,但它并不优雅(正如您自己所说)。相反,您可以使用iron-ajax。您可以在documentation page上找到一些说明。

您的<iron-request>可以改写为此。

<iron-ajax id="xhr" url="https://httpbin.org/post" content-type="application/x-www-form-urlencoded" method="POST" body="[[inputdata]]" on-response="onXhrSuccess"></iron-ajax>

您的保存功能,

save() {
    this.$.xhr.generateRequest();
}

onXhrSuccess(event, request) {
    console.log("finished");
    poly.$.responsetext.innerHTML = event.detail.response;
}