質問: お世話になっております。 reCAPTCHA v3を導入しようとしているのですが、サーバ側にjs経由でリクエストが送れずに困っております。 具体的にはPOSTのリクエストがGETに変わってしまいます。 やろうとしていることは 1. formをsubmitする(POST) 2. javascript(jQuery)でリクエストを捕まえる(preventDefault()) 3. 非同期で取得したreCAPTCHA用のトークンをhiddenタグにセットしてformのリクエストに含める 4. javascriptで改めてsubmitする ↓ 5. POSTリクエストがGETに変わってしまう いろいろなサイトで紹介されているコードですが、下記のように実装しました。 ``` ``` この結果が`/?g-recaptcha-token=03AF6jDqWBylKAs...` のようにGETリクエストになってサーバ側に届いてしまい、原因が分からずに困っています。 手がかりでも構わないので、アドバイスを頂けると幸いです。よろしくお願いいたします。
回答: `event.preventDefault();`ですが、`event`が未定義でエラーが発生しています。 そのため、本来のsubmit処理が動作しています。 以下のようにコールバック関数に引数を指定して下さい。 ``` $('form').submit(function(event){ event.preventDefault(); }); ``` ただ、これでも未だ問題があり、フォームにinputタグを追加した後の`$('form').submit();`で再度submitしているため再帰して無限ループに陥ります。 submit前に何か処理を行いたいだけであれば、Event.preventDefaultはコールしなくてOKです。 ``` $('form').submit(function () { $('form').prepend(''); }); ```