0

私はeコマースプロジェクトに取り組んでいます。チェックアウト プロセス中に、チェックアウト プロセスの最後にアイテムを購入するためのボタンがあります。そのボタンをクリックすると、POST リクエスト (標準、AJAX なし) を使用してページにフォームが送信されます。ただし、その送信ボタンをすばやく複数回クリックすると、複数の POST リクエストがサーバーに送信されるため、複数の注文も作成されます。

私の質問: JavaScript によるこれらの複数のボタンのクリックを防ぐために保存されているのでしょうか、それとも、新しいページの読み込みが開始されたために、ある時点でページが奇妙な状態になっているのでしょうか?

インラインスクリプトでそれを行う場合、それについて違いはありますか:

onsubmit="if(submitted) return false; submitted = true; return true"

または私のJS外部ファイルで?

もう 1 つのオプションは、フォームの送信直後に送信ボタンを無効にすることですが、IE は本当に見苦しいフォントの色をボタンに追加しますが、これは CSS では削除できません。

4

1 に答える 1

0

ページは、フォーム Post が現在のドキュメントを置き換える新しいコンテンツを返し、新しいドキュメントをロードするまで、イベントの処理と JavaScript の実行を続けます。新しいコンテンツが到着し、現在のドキュメントが閉じられるまで、奇妙な状態ではなく、正常に動作します。

ボタンの複数回の押下を防止するためのさまざまな手法があります。コードは、投稿が (グローバル変数で) 既に送信されたという事実を追跡し、その変数が設定されるたびにそれ以上の送信をブロックできます。UI では、最初の投稿が開始されるとすぐにボタンを無効にして、ボタンを再度押すことができないようにすることができます。

于 2013-09-25T06:39:45.880 に答える