以前、画面内容を登録するためにFormのsubmitをした後、結果の画面が表示される前に、別のボタンを押すと、内容がnullのFormが送られる現象が発生することを教えていただきました。
このための防止策として、JSPの中で、フラグを定義し、falseであればsubmit処理し、trueであればsubmit処理しないようにコントロールするようにしました。
var flug = false;
function update() {
if (flug) {
return;
}
flug = true;
aaForm.type = "update";
document.aaForm.submit();
}
function check() {
if (flug) {
return;
}
flug = true;
aaForm.type = "icheck";
document.aaForm.submit();
}
function idou() {
aaForm.type = "idou";
document.aaForm.submit();
}
・
・
<input type="button" name="add" value="登録" onClick="update();"/>
<input type="button" name="chk" value="検索" onClick="check();"/>
<input type="button" name="ido" value="移動" onClick="idou();"/>
・
・
JSPを見ますと、同じ画面の時はflugをによる2重submit防止の手法が使われていますが、画面遷移するときは使われていません。画面遷移するときは、この手法でいいのでしょうか、それとも、画面遷移の時も2重submit防止手法を組み込んだほうがいいのでしょうか。
また、2重submitを防止するための他の手法がありましたら教えてください。
どうぞよろしくお願いします。
No.1ベストアンサー
- 回答日時:
まずお使いの用語に間違いがあるので、訂正させていただきます。
> JSPの中でフラグを定義し、
JSPはサーバサイドJavaで使用されるテンプレート・ファイルですので、間違いです。
正しくはJavascriptです。
> 画面遷移するときは、この手法でいいのでしょうか、それとも、画面遷移の時も2重submit防止手法を組み込んだほうがいいのでしょうか。
ご提示になっているのは「フォーム送信」であり、一般的な遷移であれば、HTML的には<a href..>等によるものを指します(javascriptではlocation.href="..."です)。
function idou() {
location.href="...";
}
で事足りるのと違いますか?
a href="..." とは、「コンテンツの取得」であり、form.submit()は「移動」なので、ニュアンス的にはsubmitが「遷移」という意味で間違いはないのですが。。。。あくまで慣用的に。
また、「登録」と「検索」は、出力される結果が大幅に異なるように思いますので、サーバサイド処理を簡略にする意味で、
form.action = "regist.py"や、form.action = "search.py"などとして、サーバサイド呼び出しを分けたほうがいいと思います。
submit系の処理は、データの正確な送信がもっと重要なので、いかなる場合も多重投稿を防止します。
丁寧なご回答をいただきまして、ありがとうございます。
用語の使い方で、JSPとJavaScriptは同じ物と思っていました。ご指摘ありがとうございました。
>submit系の処理は、データの正確な送信がもっと重要なので、いかなる場合も多重投稿を防止します。
よくわかりました。早速対応したいと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript ①入力フォーム→②確認表示画面→③送信完了画面のコードを書いているのです、 入力フォームから受け取っ 2 2022/05/10 16:45
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- HTML・CSS ボタンをクリックした時に、入力フォームのすぐ下部に、「入力欄が空白です」というテキストメッセージが表 1 2022/04/27 16:25
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- PHP php ログイン 1 2022/11/01 00:24
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript プログラムがうまく動きませんレビューお願いします 1 2022/07/10 05:08
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
C言語で今まで表示していた画面...
-
Strutsで画面遷移させない。
-
FormのsubmitでFormの内容がnull
-
C# ログイン画面からメイン画面...
-
プログラミングで例えばゲーム...
-
SessionとViewStateについて
-
ホームページビルダーが遅い!...
-
サブミット後、自動的に画面を...
-
ASP.NET 画面遷移前の状態を保...
-
system("cls")について
-
"+"文字が" (スペース)"に文字...
-
Javascriptのhistory.back()が...
-
GUIとは何でしょうか?(定義)
-
URLはそのままで、リンクをクリ...
-
Java-jspの画面入力値保持について
-
画面を隠す・消す方法を教えて...
-
strutsで、JSP→アクションクラ...
-
ブラウザ表示しない設定のPDFの...
-
遷移元を判定したい!
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
三菱GOTの画面切り替えについて
-
画面遷移を行わずに同一ページ...
-
プログラミングで例えばゲーム...
-
フロントエンドフレームワーク...
-
Java-jspの画面入力値保持について
-
遷移元を判定したい!
-
ASP.NET 画面遷移前の状態を保...
-
Googleキーワードについて キー...
-
Javaプログラミングの質問にな...
-
C言語で今まで表示していた画面...
-
ボタンを押したあとに画像を表...
-
セッション切れでのリクエスト...
-
C# ログイン画面からメイン画面...
-
JavaScriptでページが更新され...
-
ServletからServletへの値渡し
-
ZOOMでオンラインミーティング
-
登録後、呼び出し元ページに戻...
-
サブミット後、自動的に画面を...
-
アドレスバーに引数を表示させ...
-
Beautiful Soupのインストール...
おすすめ情報