- ベストアンサー
Request.Form(key)の中身をクリアにする方法
- 前ページでPOSTされた「Request.Form(key)」の中身をクリアする方法を教えてください。
- 具体的な方法としては、POSTされた値を用いて判定処理が終わったら、Request.Form(key)の中身を「0」または「NULL」にすることでクリアすることができます。
- ただし、「<% Request.Form(key) = 0 %>」とするとエラーになりますので注意が必要です。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
画面1 → (サブミット) → 画面2 → (サブミット) → 画面3 → (ブラウザの戻る) → 画面2 と動かした場合に、画面2でinit()が呼ばれないようにする、ということですか? 戻るボタンを押した場合ですが、ASPは実行されずに以前のままの画面が表示されているかと思います。 ASPではなく、クライアント側のスクリプトで対応できないでしょうか。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=SHIFT_JIS"> <title>テスト用</title> <script language="JavaScript"> function init() { if (document.form1.reload.value == "1") { return; } document.form1.reload.value = "1"; //initを実行したことのフラグ document.form1.aaa.value = "DEFAULT"; } </script> </head> <body onload="init();"> <form name="form1" action="page2.asp" method="post"> <input type="text" name="aaa"> <input type="submit"> <input type="hidden" name="reload" value="0"> </form> </body> </html> 一応IE6ではできるようでしたが、他のブラウザや設定によってはダメかもしれません。 また、もしもサーバー側のASPが再度呼ばれているようでしたら、この方法は使えません。
その他の回答 (1)
- sawagani
- ベストアンサー率73% (19/26)
Requestに対して値の代入は(たぶん)できません。 一旦変数に代入してはどうですか? (クリアしたい理由が解からないので的外れかもしれませんが) <% Dim strReload strReload = Request.Form("reload") If strReload = "1" Then %> <body onload ="init()"> <% strReload = "0" %> <% Else %> <body> <% End If %>
お礼
ありがとうございました。
補足
ご回答、ありがとうございました。 クリアしたい理由は、ページ間でデータの受け渡しを変えるのが目的です。 1つのページにおいて、前ページからは、 「Request.Form("reload")」で、データを受け取ります。 ただ、次のページに遷移した場合で、戻ってきた、つまり次ページで、ブラウザの戻るをクリックした場合、「Request.Form("reload")」のデータは、空白にしておきたいのです。 このページが、前ページから遷移されたものか、それとも次ページより戻ってきたのかを判断させたいのです。 説明不足で申し訳なかったのですが、sawaganiさんのソースですと、毎回「Request.Form("reload")」にデータが入っている事になるので、「Request.Form("reload")」の中身を空白(NULL)にする方法を教えて下さい。 よろしくお願い致します。
お礼
ありがとうございました。