如何在Polymer 3中通过Ajax提交铁形式

时间:2018-09-23 16:19:40

标签: polymer web-component polymer-3.x iron-ajax iron-form

问题

我想在Polymer 3中提交铁表格。我使用纸质按钮,并且该表格必须通过iron-ajax提交。

这是我的 view.js

import { PolymerElement, html } from '@polymer/polymer/polymer-element.js';
import './shared-styles.js';

class Foo extends PolymerElement {
    static get template() {
        return html'
            <iron-form>
                <form id="formOne" method="post" action="https://my-api-url.com" is="iron-form">
                    <paper-input name="input-1" placeholder="Input One"></paper-input>
                    <paper-button on-tap="submitHandler">Submit</paper-button>
                </form>
            </iron-form>
        ';
    }

    submitHandler() {
        this.$.formOne.generateRequest();
    }
}
window.customElements.define('foo', Foo);

单击纸张按钮时未提交我的表单。

我尝试过的

  • 我手动创建了一个铁制ajax元素,并向 generateRequest()。可行。
  • 我在submitHandler函数中发出了警报。已显示。
  • 我尝试使用this.$.formOne.submit()提交表单。这也起作用。当然,表单不是通过ajax提交的,但是api页面已打开。
  • 我创建了一个普通的<button>来提交表单。这可行,并且也可以通过ajax发送表单,但是我想使用纸张按钮。

我们非常感谢您的帮助。谢谢!

1 个答案:

答案 0 :(得分:0)

  

我尝试使用this.$.formOne.submit()提交表单。这也起作用。当然,表单不是通过ajax提交的,但是api页面已打开。

问题是您错误地调用了<form>.submit()(执行了本机submit的同步<form>方法)而不是<iron-form>.submit()。要解决此问题,请将ID移至<iron-form>,它将执行预期的异步submit方法:

<iron-form id="formOne">
  <!-- <form id="formOne"> --> <!-- DON'T DO THIS -->
  <form>...</form>
</iron-form>

demo