質問: $(""); testtag.val(testId); $('form').append(testtag); $('form').attr('action', "test/test"); $('form').attr('method', 'post'); $('form').submit(); } ``` POSTメソッドでPOST送信できるみたいですが、試したところ、画面遷移はしませんでした。 そうすると、下記の処理の後に、画面遷移処理をすればよいかもしれませんが、 その手間を考えると、上記と変わらないのかなと思いました。 あと、下記だと、フォームの中のパラメータも付与、なおかつ、jQuery側で生成したパラメータも付与の両方はできないのかなと思いました。 ``` $.post( 'https://httpbin.org/post', 'name=太郎' ) ```
回答: 結論から申し上げますと、**質問のコードが一番**かと思われます。 httpアクセスの場合、サーバーサイドであれば、リクエストheaderに値を追加などをすることができますが、 フロントエンドでは、Ajaxでない限りは、httpリクエストに値を追加などはできません。 よって、あくまで`form`で送信の場合は、JavaScript(jQuery)によって、`input`要素を追加、があくまで妥当かと思います。 質問のコード二つ目のAjaxでのリクエストならば、headerに値を追加など可能ではありますが、ページ遷移がされないので、 その後、`location.href`によってページ遷移をさせる必要があるため、(ページ遷移させるのであれば、です) 結果、無理やり感というか、上記と大差ない仕様な気がします。 であれば、最終的にはあくまでHTMLの仕様を使う、一つ目のコードが、妥当なのかな、と思います。 ~~ただ、ページ遷移するはずの処理のはずなのに、ページ遷移がされないのが不可解ではあります。~~ ~~質問者さんの意図した動作なのであれば、問題ないとは思いますが。~~