問題タブ [double-submit-problem]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
jakarta-ee - ユーザーがWebサイトにデータを複数回投稿するのを防ぐにはどうすればよいですか
Webアプリケーション(J2EE)に取り組んでいますが、ブラウザーからの二重投稿を処理するために使用できるオプションを知りたいです。
私が過去に見て使用したソリューションはすべてクライアント側です。
- ユーザーが送信ボタンをクリックするとすぐに無効にします。
- POST-Redirect-GETパターンに従って、ユーザーが[戻る]ボタンをクリックしたときにPOSTが発生しないようにします。
- フォームのonSubmitイベントを処理し、JavaScriptを使用して送信ステータスを追跡します。
可能であれば、サーバー側のソリューションを実装したいと思います。上記のアプローチよりも優れたアプローチはありますか、それともクライアント側のソリューションが最適ですか?
javascript - Railsコントローラーで、二重送信を防ぐ方法(ユーザーが送信ボタンをダブルクリックするか、Enterキーを2回押すとき)?
まあ、すべてはタイトルにありますが、もう少し説明します:-)
私の Rails アプリには多くのフォームが含まれています (Ajax 化されているかどうかに関係なく)。
ユーザーがフォームを 2 回以上送信するのを防ぐために、Javascript を使用しています。
Ajax化されたフォームの私のシナリオがあります:
- ユーザーがフォームを送信 (クリックまたは入力)
- JavaScriptは送信ボタンを無効にします
- Rails コントローラーが処理を行います (Soap リクエストや DB への挿入など)
- Railsコントローラーはページを更新し、必要に応じて送信ボタンを有効にします(エラーの場合)
ここで、ユーザーが JavaScript をバイパスした場合に、サーバー側のコードを追加して、物事を本当にきれいに保ちたいと考えています。
助言がありますか?
jquery - Chrome/Safari で 2 回送信されたフォーム
基本的なフォーム投稿を実行しようとしていますが、Chrome と Safari では次のようにサーバーに 2 回送信されます (ただし、Firefox では期待どおりに動作します)。
属性を使用して送信前にフィールドの検証を実行したいのonsubmit
ですが、戻り値がtrue
である場合、フォームは 2 回送信されます。
jQuery ハンドラーをフォームにバインドしようとしましたが、ここでもデフォルトの動作が妨げられず、フォームが 2 回送信されます。
新鮮な目で見ると、ここには目がくらむほど明らかな問題があると思いますが、検証の有無にかかわらず、提出がChromeとSafariのサーバーに重複して投稿される理由を非常に混乱させています. どんな洞察にも感謝します。
javascript - フォームを2回送信するのはなぜですか?ラジオボタン付きのjQuerysubmit()
jQueryを使用してMVCアプリでフォームを送信しています。コントローラ内にブレークポイントがあり、2回ヒットしていることがわかります。私は何が間違っているのですか?
これが私のjQueryです
これがフォームhtmlです
変更イベントを使用するべきではないと思います。誰かが問題を修正する方法を知っているなら、私は何かアイデアを聞いてみたいです。ヒントをありがとうございます。
乾杯、
サンディエゴで〜ck
ajax - Ajaxフォームを送信します。フォームを2回送信
私はcakePHPを使用していますが、私の見解では、ajax送信ボタンのあるフォームがあります。ケーキヘルパーを使ってレンダリングしました。
[送信]をクリックすると、コントローラーアクションが2回呼び出されます。この質問が存在する場合はstackOverlowを検索しましたが、有効な解決策が見つかりませんでした。構文エラーはありません。
助けていただければ幸いです。ありがとう。
ajax - ajax駆動のフォームが2回送信されないようにする方法は?
Grails アプリケーションで作業しながら、Ajax で最初の一歩を踏み出しています。私は使っている
最も簡単な方法で、箱から出してすぐにうまくいきました (ありがとうgrails!)。問題は、Ajax 呼び出しが html を返して更新するのに (少なくともテスト システムでは) 約 2 秒かかることです。その間、ユーザーは送信ボタンをもう一度押すことができます (実際にはかなり頻繁に押します)。現時点では、これにより 2 回目の呼び出しが行われ、最終的に出力が台無しになります (同じデータを 2 回送信することはできないというエラー メッセージが表示されます)。
これを防ぐ最善の方法は何ですか?
ご意見をお寄せいただきありがとうございます。
php - 1 ページに 2 回データを送信する
私はこの質問をしましたが、非常に多くのくだらないコードがあったので、今回は最小量のコードに分解しました。フォームページは、確認ページにデータを送信します。
ユーザーが再確認できるように、ページがユーザーにデータをエコーすることを確認します。次に、「送信」をクリックすると、同じページがリロードされ、メールが送信され、フォームアクションの URL が更新され、$url が空ではないため、ユーザーが知らないうちに小さな JavaScript がフォームを再度送信します。すべてが機能していますが、javascript はその役割を果たしていません。ページはそこに座っているだけで、ページソースにJavaScriptが表示されているので、そこにあります。
フォームページ:
確認ページ:
javascript - jQuery Submit イベントが 2 回発生する
jQuerysubmit()
イベントが 2 回発生しますが、その理由がわかりません。
テンプレートエンジンを使用してHTMLを動的に構築しているため、$(document).ready()
次のように複数回呼び出すことになります...
...後で...
フォーム HTML:
(参考: Safari コンソールでこれを実行すると、これが表示され$('form.search').get()
ます[
<form class="search" method="get" action="/search/">…</form>
]
)
問題:
Enter送信ボタンを押すかクリックするか、submit
イベントをトリガーすると、イベントが 2 回発生します。これ<li>
は、 が dom に 2 回追加され、alert
も 2 回表示されるためです。
犯人:
click
最初の呼び出しでイベント バインディングをコメント アウトする$(document).ready
と、予想どおり、イベントは 1 回だけ発生します。最初のコードはどのようにしてダブル イベント トリガーを引き起こしているのでしょうか?
jquery - Jquery - Internet Explorer がフォームを 2 回送信する
(ボタンの代わりに) リンクを含むフォームを送信するために使用する次のコードがあります。これは、いくつかの CSS ホバー機能を使用できるようにするためです。
問題は、Internet Explorer がフォームを 2 回送信する場合があることです。問題を自分で再現することはできませんでしたが、実稼働サーバーのログで確認できます。この問題は IE6 ~ IE9 でも発生します。他のすべてのブラウザは正常に動作します。リンクからfalseを返すと言っている投稿を見たことがありますが、私はそうしています。
どんな助けでも大歓迎です。
javascript - IE9 二重フォーム送信の問題
私がいる状況について誰かが情報やフィードバックを持っているかどうか疑問に思っています. これは IE9 でのみ発生しますが、Safari、Chrome (最新)、FF (Ver 5/6)、IE8、および IE9 に対してのみテストしました。
コードは次のとおりです。
問題のある部分は次のとおりです。
このコードは長い間私のサイトにありましたが、IE9 が今年リリースされたばかりなので、二重送信の問題に遭遇したのはこれが初めてであり、おそらく最近では IE9 を使用する人がますます増えているため、この問題についてユーザーから苦情を受けています。 .
最も難しいのは、二重送信の問題が常に再現可能であるとは限らないことです。2 回送信される場合もあれば、1 回送信される場合もあります。
私の現在の回避策は、次の変更です。
次のように変更します。
これにより、IE9 は IE8 との互換性を使用するようになり、送信のために Javascript が適切に実行されます。
マイクロソフトのサポートに電話したところ、これは「Javascript の互換性の問題」であるとのことでした。そのため、サイトが IE9 で適切に動作するように Javascript を微調整する必要があります..(当たり前!)
とにかく、私のコードです:
はそもそも間違っていますか?他のブラウザは文句を言っていませんが、そもそもこれは正しくないのでしょうか?
誰かが同様の問題に直面している場合は、さらに情報やフィードバックをいただければ幸いです。現在、X-UA-Compatible を IE=8 に変更しない場合、コードを次のように変更できます。
これにより、二重送信の問題も解決されますが、注意すべき IE9 の互換性の問題のリストもありますか?
ありがとう!