dポイントプレゼントキャンペーン実施中!

「1.htm」のフォームでチェックボックスを作成し、
「2.asp」で結果を出力しようとしています。
が、複数チェックを入れるとエラーになります。
どこがまちがっているのでしょうか。
どなかたご教授ください。
宜しくお願いします。

****1.htm****
<form method="POST" action="2.asp">
<INPUT type="checkbox" name="koumoku" value="1">1<br>
<INPUT type="checkbox" name="koumoku" value="2">2<br>
<INPUT type="checkbox" name="koumoku" value="3">3<br>
</form>

****2.asp****
<%
koumoku = Request.Form("koumoku")

If koumoku = 1 then
Response.Write "<p>1111</p>"
End If
If koumoku = 2 then
Response.Write "<p>2222</p>"
End If
If koumoku = 3 then
Response.Write "<p>3333</p>"
End If

****エラーメッセージ******
型が一致しません。: '[string: "1, 2, 3"]'

A 回答 (1件)

2.asp側で受け取ったデータをよく検証しましょう


POSTメソッドではなく GETメソッドで送ってみるとどのようにデータが構築されるかが URLに記述されます

今回の場合チェックしたのが1つなら koumoku=1とかkoumoku=2といった具合で渡されるので受け取ったデータは『1』『2』といった単独の文字になります
複数チェックした場合は
GETの場合koumoku=1&koumoku=2&koumoku=3のように渡されます
POSTの場合『,』で区切られた『1,2,3』といった文字列で渡されます
受け取ったデータを Splitなどで分解してから比較しましょう

dim ss, ar, w
ss = Request.Form("koumoku")
Response.Write( "ResponseData-koumoku:" & ss & "<br>" )
ar = split(ss, ",")
for each w in ar
  if w = 1 then
    Response.Write("<p>1111</p>")
  end if
  if w = 2 then
    Response.Write("<p>2222</p>")
  end if
  if w = 3 then
    Response.Write("<p>3333</p>")
  end if
next

といった具合です
    • good
    • 1
この回答へのお礼

回答ありがとうございます。
教えていただいたようにやったらできました。
丁寧な回答ありがとうございました。

お礼日時:2007/12/11 11:53

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!