• 締切済み

ASPクライアント側処理時の変数使用

ASPアプリケーションにて、登録情報の入力チェックを行うため、下記のようにしたところ、メッセージボックスが出てきません(テキストボックスに入力される初期値はnullになっています)。クライアント側で処理させるため、メッセージボックスを使用しています。内部変数を使用しても上手くできないため、外部変数を使用してみました。 <% Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "database","","" Set ObjRS = Server.CreateObject("ADODB.Recordset") ObjRS.Open "master", ObjConn, 3, 3 Session.Contents.Item("test") = ObjRS.Fields("摂取量").Value %> <script language="VBScript"> <!-- msg = Session.Contents.Item("test") MsgBox "Null" & IsNull(msg) MsgBox "Empty" & IsEmpty(msg) MsgBox msg --> </script> <% ObjRS.Close ObjConn.Close %>

みんなの回答

回答No.2

> If MsgBox("入力した値は""" & """<%= ObjRS.Fields("摂取量").Value %>""" &""""です", 4, "入力OK") = 6 Then これだと、表示されるメッセージはサーバー側でページを送信した時に固定されてしまいます。 実行時の値を取得したい場合は、サーバー側ではなくクライアント側のオブジェクトを操作します。 If MsgBox("入力した値は""" & volume_2.value & """です", 4, "入力OK") = 6 Then とかでしょうか。

Feruza
質問者

お礼

大変参考になりました。早速確認してみたところ、コンパイルエラーはでませんでしたが、実行されません。原因は分かりません。

回答No.1

> msg = Session.Contents.Item("test") Sessionはサーバー側にあるオブジェクトなので、クライアントのスクリプトでは使用できません。 msg = <%= Session.Contents.Item("test") %> のようにして、クライアントに渡す前に変数の内容を書き出せばいいのではないでしょうか。

Feruza
質問者

お礼

回答ありがとうございます。大変参考になりました。上記でも上手くできず、 msg = "<%= ObjRS.Fields("摂取量").Value %>" としたところ、上手くできました。しかしながら、これでは入力画面が現れる前になっていました。 そこで、入力決定後、保存される前に下記のようにすることにより、解決しました。 If Request.Form("volume_2") = Empty Then Response.Write("入力された摂取量は正しくありません。<br><hr>") Response.End End If なお、前者については、下記のようにしていいようですが、上手くできません。 <form action="test.asp" method="post"> 摂取量を入力して下さい。<br> <input type="text" name="volume_2" value="<%= ObjRS.Fields("摂取量").Value %>" size="20">[g]<input type="reset" name="button1" value="クリア"> <input type="submit" name="button2" value="決定"><br><br> </form> <script language="VBScript"> Sub volume_2_Change() If MsgBox("入力した値は""" & """<%= ObjRS.Fields("摂取量").Value %>""" &""""です", 4, "入力OK") = 6 Then '黒で表示 volume_2.ForeColor = 0 Else '赤で表示 volume_2.ForeColor = 255 End If End Sub Sub Window_OnLoad() volume_2.IMEMode = 1 End Sub </script>

関連するQ&A