2012-05-20 20 views
8

私はASPのクラシックでフォームを設定することだし、それは提出(アクション自己)ASP古典

しかし、それは以前の応募の結果を示している。この時間後にリロードされますので、私はことをどのように確認することができますPOSTの提出が行われましたか?

PHPのように:

if($_POST['submit']) { 
    show results... 
} 

答えて

23

あなたはいくつかのオプションがあります: -

方法1をリクエストメソッドチェック:

If Request.ServerVariables("REQUEST_METHOD") = "POST" Then 
    'Show Results... 
End If 

を方法2 - 追加あなたのフォームに非表示フィールドを入力し、値をチェックします。掲載されています

If Request.form("HiddenValue") = "1" Then 
    'Show Results... 
End If 

方法3 - Request.Formコレクションが項目が含まれている場合チェック:

If Request.Form.Count > 0 Then 
    'Show Results... 
End If 

方法4 - クエリ文字列に投稿(すなわち、 <form>の設定方法?ポスト=はい)

If Request.QueryString("post") = "yes" Then 
    'Show Results... 
End If 

1を選ぶには?

好きな方法は方法4です。アドレスバーに何が起こっているかを簡単に見ることができます。何らかの理由でURLの詳細レベルを提示したくない場合は、オプション3を使用する傾向があります。実装が簡単で、ソースフォームに変更を加える必要はありません&は信頼性があります。他の2つの方法については :

  • 方法は、1 - 私は は、サーバの上に、100%のコントロールを持っていない場合は、サーバー変数に頼る避ける傾向にあるん - そのための本当の正当性、 だけ一般的な習慣私は仕事をする傾向があります。
  • 方法2 - 値が常に である別のフィールドに、非表示フィールドを置き換えることができます。
+0

いいですが、お勧めしますか?異なるアプローチはどのように比較されますか? – AnthonyWJones

+0

@AnthonyWJonesええ、良い点は、解答を少し解明するために編集されました。 – HeavenCore

+4

FWIW、私は方法1をお勧めします。あなたが制御しないサーバー上の奇妙なFUDは、あなたが別のホストを見つけなければならない、おそらくこのような基本的なことをするサーバーを信頼できないならば不合理です。 'REQUEST_METHOD'変数は、どのHTTPメソッドが使用されているかを検出するためのものです。方法2と4では、開発者はコードを不要な内容で汚染する必要があるため、代替案が利用可能な場合はIMOを避けるべきです。方法4もかなり良いアプローチですが、方法1の明確な目的が欠けています。 – AnthonyWJones

関連する問題