フォームを再入力し、スクリプトなしでエラーを表示する最良の方法は何ですか?
-
05-07-2019 - |
質問
フォームの検証などにajax呼び出しを使用するアプリケーションを構築していますが、問題は、CSSがまったくない新しいページに検証エラーが表示され、フォームが完全にリセットされたときに気に入らないことですJavaScript。
1ダースのフォームについて話しているので、ユーザーがフォームを何度も繰り返すのは非常に面倒です。
このトピックに関するいくつかの回答を読みましたが、特定の方法、このような状況のベストプラクティスはありますか(フォーム検証に沿って)?
既に回答がある場合はおAびします。
編集:
すべての検証はサーバー側で行われ、現在、ajaxを使用してエラーが表示されています。フォームの処理中にエラーが発生した場合、JavaScriptを使用せずにフォームを再入力し、エラーを表示する便利な方法が欲しいです。
解決
質問をサーバーで検証していないことを暗示しているかどうかはわかりません。これは、Javascriptを無効にするだけでフォームをバイパスできるので、大きなセキュリティホールと見なされます。サーバーで毎回検証する必要がありますが、クライアント側の検証は簡単に実行できます。
さらに、「問題」は適切なフレームワークを使用すると、ページがリロードされたときにフォームが自動的にリセットされるという意味がなくなります-Pythonでは、エラーの場合、Djangoはフォームを自動的に再作成します。 PHPでは、CakePHPとCodeIgniterも同様に機能します。「よくあるタスク」のカテゴリに分類されるため、ほとんどの優れたフレームワークがこれを行うと確信しています。そのフレームワークは抽象化されることになっています。
フレームワークを使用していないときはいつでも、ニーズを満たす独自の小さなFormクラスを作成します。
編集:
フォームに再入力するために必要なものにプラグインできることは知りません。あなたの最善の策は、それのためにあなた自身の小さなクラスを書くことです、それは1時間以内で終わります。
他のヒント
通常は、すべてのエラー文字列をセッション変数の配列に格納します(PHPを使用しています)。サーバー側でエラーが発生した場合は、ユーザーをフォームページにリダイレクトし、セッション変数を確認して、必要に応じてエラーを表示します。セッション変数を表示した後は、必ずセッション変数の設定を解除してメモリを解放してください。フォームの再入力についても同様です-セッション変数の値。
フォームの検証は、最初にサーバーで、後でクライアントで記述する必要があります。いずれの場合でも、サーバーで検証する必要があります。フォームの検証など、サイトの運用にとってシンプルで重要なことをAjaxに依存しないでください。控えめなスクリプトを使用すると、デフォルトのフォーム送信を禁止し、Ajaxを使用してフォームを処理できます。それ以外の場合は、送信が通過し、サーバー生成の検証ページで応答できるようにします。
サーバー側で検証を実行し、フォームを再入力します。
AJAXによる検証は nice ですが、強制することはできません。したがって、AJAXが発生するかどうかにかかわらず、検証を実行する方がより効果的です。検証を処理し、JavaScriptを持っている人のためにJSONのエラーの配列を返すことができる2番目のルートを提案します。ただし、javascriptを使用しない場合、検証が機能する唯一の方法はサーバー側を使用することです。
残念ながら、あなたは本当にこれを選択することはできません。 firebugを使用している中途半端なプログラマーやハッカーは、javascriptを編集し、フックを切り離し、彼の側でやろうとしていることすべてを回避できます。