🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

7386閲覧

jQueryでフォーム送信時にPOSTパラメータ付与。

tkshp

総合スコア174

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

1グッド

1クリップ

投稿2020/01/07 02:07

編集2020/01/07 02:09

前提・実現したいこと

HTMLには、フォームが用意されていて、
HTMLファイルを編集せずに(HTML自体はjQueryでいじってもよい)、
jQueryでフォームのPOST送信させる際、パラメータを付与したいのですが、
その場合、hiddenタグを動的に生成して値を埋め込む方法しかないですか?
ボタンのクリック処理にフォーム送信機能を持たせます。
他に方法があればご教示お願いします。

試したこと

下記の方法しか思いつかなかったのですが、他に実装方法ってありますか?
hiddenタグを動的に生成して埋め込んでいるのが、なんか無理やりな気がしたためです。

jQuery

1$(document).on("click",".mysubmit",function(e){ 2 var testtag = $("<input type='hidden' name='testId'>"); 3 testtag.val(testId); 4 $('form').append(testtag); 5 6 $('form').attr('action', "test/test"); 7 $('form').attr('method', 'post'); 8 $('form').submit(); 9} 10

POSTメソッドでPOST送信できるみたいですが、試したところ、画面遷移はしませんでした。
そうすると、下記の処理の後に、画面遷移処理をすればよいかもしれませんが、
その手間を考えると、上記と変わらないのかなと思いました。
あと、下記だと、フォームの中のパラメータも付与、なおかつ、jQuery側で生成したパラメータも付与の両方はできないのかなと思いました。

jQuery

1$.post( 'https://httpbin.org/post', 'name=太郎' )
miyabi_pudding👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

miyabi_takatsuk

2020/01/07 02:19 編集

JavaScript(jQuery)でパラメータを後付けして送信なら、その処理でいいかと思います。 何が問題な感じでしょうか? もっといい方法がある、正規(かスマート)な方法があるなら知りたい、ということでしょうか。 それとも、一つ目の構文ではページ遷移しない、というのが問題、ということでしょうか。
tkshp

2020/01/07 02:21

ご指摘ありがとうございます。 無理やりな感じがしたので、 もっといい方法がある、正規(かスマート)な方法があるなら知りたい、ということです。
miyabi_takatsuk

2020/01/07 02:23 編集

わかりました。 遷移しないことに関しては特に不問でよろしいということですね。 回答に移ります。
tkshp

2020/01/07 02:27

$.postでは遷移しなかったですが、$('form').submit()では画面遷移しました。 $.postの場合は、その後に画面遷移処理を書けばよいのかなと思いました。 話が噛み合ってなかったらすみません。
guest

回答2

0

jQueryでフォームのPOST送信させる

のがajaxを利用するのでないなら

hiddenタグを動的に生成して値を埋め込む方法しかないですか?

こうするしかありません
もしくはクッキーなど別の渡し方を検討ください

投稿2020/01/07 02:31

yambejp

総合スコア116663

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkshp

2020/01/07 02:36

ご回答ありがとうございます。 とても勉強になりました。 ありがとうございます。
guest

0

ベストアンサー

結論から申し上げますと、質問のコードが一番かと思われます。

httpアクセスの場合、サーバーサイドであれば、リクエストheaderに値を追加などをすることができますが、
フロントエンドでは、Ajaxでない限りは、httpリクエストに値を追加などはできません。
よって、あくまでformで送信の場合は、JavaScript(jQuery)によって、input要素を追加、があくまで妥当かと思います。

質問のコード二つ目のAjaxでのリクエストならば、headerに値を追加など可能ではありますが、ページ遷移がされないので、
その後、location.hrefによってページ遷移をさせる必要があるため、(ページ遷移させるのであれば、です)
結果、無理やり感というか、上記と大差ない仕様な気がします。
であれば、最終的にはあくまでHTMLの仕様を使う、一つ目のコードが、妥当なのかな、と思います。

ただ、ページ遷移するはずの処理のはずなのに、ページ遷移がされないのが不可解ではあります。
質問者さんの意図した動作なのであれば、問題ないとは思いますが。

投稿2020/01/07 02:33

編集2020/01/07 02:35
miyabi_takatsuk

総合スコア9555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

tkshp

2020/01/07 02:36

ご回答ありがとうございます。 とても勉強になりました。 ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問