Как отправить железо через ajax в Polymer 3
Эта проблема
Я хочу отправить железную форму в 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);
Моя форма не отправляется при нажатии на кнопку бумаги.
Что я пробовал
- Я создал элемент iron-ajax вручную и сделал запрос с
generateRequest()
, Это сработало. - Я поставил предупреждение в
submitHandler
функция. Было показано. - Я пытался отправить форму с
this.$.formOne.submit()
, Это тоже сработало. Конечно, форма не была отправлена через ajax, но страница API была открыта. - Я создал нормальный
<button>
отправить форму. Это работает, а также отправляет форму через ajax, но я хочу использовать кнопку бумаги.
Любая помощь высоко ценится. Спасибо!
1 ответ
Решение
Я пытался отправить форму с
this.$.formOne.submit()
, Это тоже сработало. Конечно, форма не была отправлена через ajax, но страница API была открыта.
Проблема в том, что вы неправильно звоните <form>.submit()
(выполняет синхронный submit
метод родной <form>
) вместо <iron-form>.submit()
, Чтобы решить эту проблему, переместите идентификатор в <iron-form>
, который будет выполнять предполагаемый асинхронный submit
метод:
<iron-form id="formOne">
<!-- <form id="formOne"> --> <!-- DON'T DO THIS -->
<form>...</form>
</iron-form>