iron-request 不会提出超过一个请求
iron-request doesn't make more than one request
我正在使用 Polymer 2 library. Whenever I try to make multiple requests using iron-request,代码似乎只在第一次启动时发出 POST 请求。任何后续请求似乎都会被忽略,即使设置为发送到服务器的数据与初始请求不同。
我在这个 Plunker 中写了一个小例子:https://plnkr.co/edit/cozVKUdQ2q2SV46rcCTL?p=preview
我创建了一个铁请求和一个按钮元素来启动请求,如下所示:
<paper-button on-click="save" class="green">Send</paper-button>
...
<iron-request id="xhr"></iron-request>
保存功能设置为从文本区域获取文本并将其发送到服务器。
save() {
var response = this.$.xhr.send({
url: "https://httpbin.org/post",
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
body: {
content: this.inputdata
},
method: "POST"
});
var poly = this;
this.$.xhr.completes.then(function(data) {
console.log("finished");
poly.$.responsetext.innerHTML = data.response;
})
有问题的代码在 "element1.html" 文件中。如果您尝试发送不同的文本负载,则只会发送第一个请求。 (您可以在响应框中看到表单 "content" 字段保持不变。)
知道发生了什么事吗?我在想,每次我需要提出新请求时,我都必须创建新的 iron-request 元素……但这听起来不是一个非常优雅的解决方案。
如您所料,iron-request
已构建为发送单个 HTTP 请求。我快速浏览了它的实现。 send
方法实际上只是 return null
而不会做任何事情,如果请求的状态大于 0,如果您以前使用过它,就会出现这种情况。
虽然您可以为每个请求创建一个新的 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;
}
我正在使用 Polymer 2 library. Whenever I try to make multiple requests using iron-request,代码似乎只在第一次启动时发出 POST 请求。任何后续请求似乎都会被忽略,即使设置为发送到服务器的数据与初始请求不同。
我在这个 Plunker 中写了一个小例子:https://plnkr.co/edit/cozVKUdQ2q2SV46rcCTL?p=preview
我创建了一个铁请求和一个按钮元素来启动请求,如下所示:
<paper-button on-click="save" class="green">Send</paper-button>
...
<iron-request id="xhr"></iron-request>
保存功能设置为从文本区域获取文本并将其发送到服务器。
save() {
var response = this.$.xhr.send({
url: "https://httpbin.org/post",
headers: {
'content-type': 'application/x-www-form-urlencoded'
},
body: {
content: this.inputdata
},
method: "POST"
});
var poly = this;
this.$.xhr.completes.then(function(data) {
console.log("finished");
poly.$.responsetext.innerHTML = data.response;
})
有问题的代码在 "element1.html" 文件中。如果您尝试发送不同的文本负载,则只会发送第一个请求。 (您可以在响应框中看到表单 "content" 字段保持不变。)
知道发生了什么事吗?我在想,每次我需要提出新请求时,我都必须创建新的 iron-request 元素……但这听起来不是一个非常优雅的解决方案。
如您所料,iron-request
已构建为发送单个 HTTP 请求。我快速浏览了它的实现。 send
方法实际上只是 return null
而不会做任何事情,如果请求的状态大于 0,如果您以前使用过它,就会出现这种情况。
虽然您可以为每个请求创建一个新的 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;
}