javascript - iron-request 不会提出超过一个请求

标签 javascript ajax polymer polymer-2.x

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

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

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

<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”文件中。如果您尝试发送不同的文本负载,则只会发送第一个请求。 (您可以在响应框中看到表单“内容”字段保持不变。)

知道发生了什么事吗?我在想,每次我需要提出新请求时,我都必须创建新的 iron-request 元素……但这听起来不是一个非常优雅的解决方案。

最佳答案

如您所料,iron-request已构建为发送单个 HTTP 请求。我快速浏览了它的实现。 send方法实际上只会返回 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;
}

关于javascript - iron-request 不会提出超过一个请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44836066/

相关文章:

jquery - 使用 json 在 python/django 中设置用户登录并且不知道从哪里开始

javascript - 在 Google Apps 脚本中应用 DRY 原则

jquery .load 之后 javascript 不起作用

javascript - 为什么我的 AJAX 错误没有返回 Webmethod 异常?

forms - 可以使用 ngControl 绑定(bind) Polymer paper-dropdown-menu 吗?

css - polymer 1.x : Formatting <paper-menu-button>

gradle - 客户依赖关系等级在哪里暴露依赖关系?

javascript - 如何匹配字符 '<' 后面没有 ('a' 或 'em' 或 'strong' )?

javascript - XPages 中的列表功能

javascript - 简单的 javascript AJAX 发布功能不起作用