经典 ASP:如何将选定的值从 Dropdown 传递到 onchange 事件的 SELECT 查询

问题描述

我需要将下拉列表中的选定值传递给 SELECT 查询,并根据传递给页面显示的相应表/记录集的值。我正在努力寻找如何传递价值的方法

 function getUnitCode() {    
    var x = document.getElementById("UnitCodeDDL");    
    var unical = x.options[x.selectedindex].value;
    alert(unical);
}
<%   
   Dim strUnitCode
   strUnitCode=Request.Form("UnitCodeDDL") 
 %>
 <SELECT NAME=UnitCodeDDL id=UnitCodeDDL onchange="getUnitCode();javascript: document.forms['VehForm'].submit()">
    <OPTION VALUE=''>Please Select UnitCode</OPTION>
<%
 Dim objRS,strsql
  Set objRS=Server.CreateObject ("ADODB.Recordset")
         
  strsql = "SELECT v.unitcode,u.description "
  strsql = strsql & "FROM " & strBrand & "_vehicle AS v " 
  strsql = strsql & "LEFT JOIN unipos AS u "
  strsql = strsql & "ON v.unitcode = u.unitcode "
  strsql = strsql & "WHERE v_code='" & strVCode & "' "
  strsql = strsql & "GROUP BY v.unitcode;"
         
  objRS.Open strsql,objConn
  do while Not objRS.EOF
     Response.Write "<OPTION VALUE='" & objRS("unitcode") & "'"
     if  objRS("unitcode")=strUnitCode Then Response.Write " selected " 
     Response.Write ">"
     Response.Write objRS("unitcode") & "</OPTION>"
     objRS.MoveNext
  Loop
  objRS.Close
  Set objRS=nothing
  Response.Write "</SELECT>"
%>
 <% 
  
  Dim strAutoSection 
  strAutoSection = strAutoSection & "<FORM name='VehForm' METHOD=POST ACTION='selectVeh.asp?brand=" & strBrand & "&VCode=" & strVCode & "&Veh=" & server.htmlencode(strVeh) & "&action=upload' enctype='multipart/form-data'>" & vbCrLf
  strAutoSection = strAutoSection & "Upload file:<INPUT TYPE='file' NAME='uploadFile'><input type='submit' value='upload'></FORM>"
  
  strAutoSection = strAutoSection & "<TABLE border=1 cellspacing=1 cellpadding=2>" & vbCrLf
  strAutoSection = strAutoSection & "<TR bgcolor='#CCFFCC'>" & vbCrLf
  strAutoSection = strAutoSection & "<TH>UNITCODE</TH>" & vbCrLf
  strAutoSection = strAutoSection & "<TH>DESCRIPTION</TH>" & vbCrLf  
  strAutoSection = strAutoSection & "</TR>" & vbCrLf

  Dim objRS_auto,strsql
  Set objRS_auto=Server.CreateObject ("ADODB.Recordset")
  strsql = "SELECT v.*,u.description "
  strsql = strsql & "FROM " & strBrand & "_vehicle AS v "
  strsql = strsql & "LEFT JOIN unitpos AS u "
  strsql = strsql & "ON v.unitcode = u.unitcode  "
  strsql = strsql & "WHERE v_code='" & strVCode & "' AND v.unitcode='" & strUnitCode & "' "
  objRS_auto.Open strsql,objConn
%>

我必须在 onchange 事件上从 UnitCodeDDL 获取值并将其传递给查询中的 strUnitCode 变量。谁能指导我如何解决这个问题?

解决方法

我怀疑你正在查看 request.form 对象,但没有在你的表单标签中规定 method=post(你没有显示)

<form method=post>
    <select name=myselect>....
    </select>
<form>
    
<% val = request.form("myselect") %>

顺便说一句,您可能希望在代码中使用续行,并在每行开头添加空格使其更具可读性。您可能还需要考虑 SQL 注入的危险,除非您希望整个数据库被盗或删除!

   strSQL = " SELECT v.unitcode,u.description" & _
            " FROM " & strBrand & "_vehicle AS v" & _
            " LEFT JOIN unipos AS u" & _
            " ON v.unitcode = u.unitcode" & _
            " WHERE v_code='" & strVCode & "'" & _
            " GROUP BY v.unitcode;"