質問: Rails で作ったフォームのサブミット時に JS 上に動的にもってるデータを追加して送信したいです これでできそうな気がしたんですが ``` $( document ).ajaxSend(function() { console.log('ajaxSend'); }); ``` とかいても console.log が表示されません ``` $('form').on("ajax:beforeSend", (event) => { console.log(event); } ``` ``` document.getElementById('test_form').addEventListener('ajax:before', (event) => { console.log(event); }) ``` とかけば送信前にトリガーはできるんですが event 内にパラメータらしきものがみあたらないので どうやってパラメータを追加すればいいかわからない状態です トリガー内で hidden_fiels を追加してそこに値をうめこんで あとはフォームに任せればできなくはないんですが 諸事情で DOM 側を変更したくないです jquery 3.6.0 ですが native JS でもいいです よろしくお願いします
回答: DOMを変更しないとなると、`FromData`を使うのが妥当かと思います。方法は2通り思い浮かびます。 ●「form 要素に紐づけた FormData を使用する」にあるように、``から`FormData`オブジェクトを作り、そこにパラメータを追加して、XHR でフォーム送信します。 通常のフォームのようにページ遷移はしないので、ページを切り替えたい場合は自力でなんとかする必要があります。 ●`formdata` イベントを使います。 ``` form.addEventLiseter('formdata', e => { e.formData.append('param1', 'data1'); }); ``` フォームは通常通り送信されて、ページ遷移も通常通り起きます。 IEとSafariは未対応です。