私はPOSTリクエストを期待してファイルを生成するエンドポイントを持っています。フロントエンドでは、フォームの送信を使用してページをリダイレクトする必要があります。しかし、フォームを動的に生成する必要があります(フロントエンドのさまざまな理由から)。ここでPOST経由のリダイレクト - Firefoxで何も起こっていません
が私の試みである(心に留めて、私はそれは様々なHTTP関連のコンポーネント間で座っているので、コードに束を編集する必要がありました):
sendRedirect(options) {
options.form = this.createForm(options.body);
options.form.setAttribute('method', 'post');
options.form.setAttribute('action', redirectTo);
options.form.submit();
}
createForm(body) {
let form = window.document.createElement('form');
return Object.keys(body).reduce((_form, key) => {
let i = document.createElement('input');
i.setAttribute('type', 'hidden');
i.setAttribute('name', key);
i.setAttribute('value', body[key]);
_form.appendChild(i);
return _form;
}, form);
}
上記グーグルクロームで正常に動作します。しかし、firefoxでは、何も起こりません(つまり、form.submit()が実行された後にネットワークリクエストは送信されません)。私はfirefoxのコードを踏んできて、それはうまく実行されているようです(つまり、すべての変数は、想定されているものに設定されています)。コードはform.submit()で実行終了に達し、その後は何もしません。
ありがとうございます。
編集:クエンティンに感謝します。ここで私はそれを動作させるために追加のコードは次のとおりです。
options.form.style.visibility = 'hidden';
window.document.getElementsByTagName('body')[0].appendChild(options.form);