2009-06-16 11 views
1

私は、フォーム検証や他のいくつかのためにajax呼び出しを使用するアプリケーションを構築しています。問題は、それらの検証エラーがCSSなしの新しいページに表示され、フォームが完全にリセットされたときに、 javascripts。フォームを再作成し、スクリプトなしでエラーを表示する最も良い方法は何ですか?

私は数十のフォームについて話しているので、ユーザーがフォームを何度も繰り返していくのは面倒です。

私はこのトピックに関するいくつかの回答を読んだことがありますが、具体的な方法があります。このような状況のベストプラクティスがあります(さらにフォーム検証の行に沿って)。

すでに回答がある場合はお詫び申し上げます。

編集:

すべての検証が現在のエラーはAJAXの助けを借りて表示されている、サーバー側で行われます。フォームの処理中にエラーが発生した場合、javascriptを使わずにフォームを再作成し、エラーを表示する便利な方法です。

+0

私は、問題が何であるかはわかりません...「no html、css」はどういう意味ですか? –

+0

私はフォーム提出イベントがajaxによって処理されることを意味するので、フォームを処理している間のエラーはスクリプトなしで特定のdivにエコーされますが、明らかにエラーは直接表示され、それは本当に問題ではありません。混乱 – saint

答えて

4

あなたがあなたの質問であなたがサーバで検証しないことを暗示しているのかどうかはわかりません - これはJavascriptを単に無効にすることでかなりフォームがバイパスされるため、大きなセキュリティホールと考えられます。あなたは毎回サーバーで検証しなければなりませんが、クライアント側の検証は単純にやりたいことです。

また、適切なフレームワークを使用すると、ページがリロードされたときにフォームがリセットされるという「問題」が問題になります。Pythonでは、Djangoはエラーが発生した場合にフォームを自動的に再作成します。 PHPでは、CakePHPとCodeIgniterも同様です。私は、フレームワークが抽象化されることになっている「共通タスク」のカテゴリに該当するため、最も良いフレームワークがこれを行うと確信しています。

私がフレームワークを使用していないときはいつでも、私は自分の小さなフォームクラスを書き、必要を満たします。

EDIT

私はあなたがプラグイン可能性がありますが、フォームを再投入することができるように持っているものには何に気づいていないです。あなたの最善の賭けはそれのためのあなた自身の小さなクラスを書くことです、それ以上1時間を取らなければなりません。

+0

私はそれが事実であったことを望みます、私はCI自身が好きです。事は私がちょうどそこにある何かを拡張しています..私のためのフレームワーク... – saint

0

フォームの検証は、最初にサーバー上に、後でクライアントに書き込まれる必要があります。いずれにせよ、サーバー上で検証する必要があります。フォームの検証としてサイトを操作する上で、シンプルで重要なものとしてAjaxに頼らないでください。控えめなスクリプトを使用すると、デフォルトのフォームの提出を防ぎ、Ajaxを使用してフォームを処理できます。それ以外の場合は、送信が通過し、サーバーが生成した検証ページで応答することができます。

+0

すべてのバリデーションはサーバー側で行われていますが、それほど問題ではありません。問題は未処理の文字列でHTMLなしのCSSであり、可能ならばそれを含めないようにしています。 – saint

+0

私は従いません。生の弦はどういう意味ですか?あなたは、PHPスクリプトなどの例外によって例外がスローされることを意味しますか? –

0

サーバー側で検証を実行し、フォームを再投入します。

AJAXによる確認はniceですが、強制することはできません。したがって、AJAXの発生の有無にかかわらず、バリデーションを実行する方が効果的です。私は検証を処理し、javascriptを持っている人のためにJSONでエラーの配列を返すことができる2番目のルートを提案します。しかし、JavaScriptを使用していない人にとっては、検証がうまくいく唯一の方法はサーバー側からです。

残念ながら、この選択肢は実際にはありません。途中でまともなプログラマーや火かき棒のハッカーは、JavaScriptを編集したり、フックを外したり、自分の側でやろうとしていることを回避することができます。

+0

私はそれがバリデーションのためにajaxコールを使用すると述べました。サーバ側。それは単にajaxの助けを借りてエラーを出力します。 – saint

+0

あなたは私の欠点を逃しました:すべての検証をサーバー側で行い、onSubmitイベントを傍受し、そこでAJAXを使用して動的検証を処理します。スクリプトがない場合は、ポストページに進み、とにかくフォームを検証します。 –

+0

私は完全にあなたのポイントを持って、あなたは現在のシナリオを説明しました。彼らがスクリプトを持っていない場合は、あなたが述べたように投稿ページに進むでしょう。問題はフォームがリセットされることです。 – saint

1

私が通常行っていることは、すべてのエラー文字列を配列変数に格納することです(私はPHPを使用します)。サーバー側でエラーが発生した場合は、ユーザーをフォームページにリダイレクトして、セッション変数varを確認し、必要に応じてエラーを表示します。セッションvarを表示した後、メモリを解放するには、セッション変数の設定を解除してください。セッションvarのフォームの値を再投入する場合も同じです。

+0

Ok ..あなたはセッションに値を保存して、フォームページにユーザーをリダイレクトしている間にセッションを表示しなければならないと言っています。私はこれをしなければならないので、あなたが言及したようにセッションを使用します。ありがとう – noobcode

関連する問題