经典 ASP:如何将所选值从下拉列表传递到 onchange 事件的 SELECT 查询

Classic ASP: How to pass the selected value from Dropdown to SELECT query on onchange event

我需要将所选值从下拉列表传递到 SELECT 查询,并根据传递给页面中显示的相应 table/recordset 的值。我正在努力寻找传递价值的方法。

 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;"