ASP表单提交时无法获取btnSubmit按钮对应值的问题咨询
问题根源
- 你当前使用的是
type="button"的按钮,只有type="submit"类型的按钮在触发表单提交时,才会自动将自身的name和value参数提交到后端,你通过JS手动调用submit()方法提交表单时,不会带上普通button的参数 - 经典ASP代码存在语法错误:
approval_value是普通字符串变量,不能用set关键字赋值,set仅用于COM对象赋值,这也是你拿不到值的原因之一
解决方案
方案1:直接改用submit类型按钮,无需JS提交(最简单)
把两个操作按钮改成type="submit",删除原有JS提交函数,点击按钮时会自动提交表单并带上对应按钮的值:
<form name="frmInput" method="POST"> <table> <tr class="font10black"> <td colspan="3" align="right"> <input class="button" type="button" name="btnSubmit" value="BACK" onClick="frmBack()" > <input type="hidden" name="file_name" value="<%=file_name%>"> <!-- 改成submit类型,不需要额外绑定onclick提交事件 --> <input class="button" type="submit" name="btnSubmit" value="REJECT" > <input class="button" type="submit" name="btnSubmit" value="APPROVE" > </td> </tr> </table> </form>
同步修改ASP后端代码,去掉普通变量赋值的set关键字:
If Request.ServerVariables("REQUEST_METHOD") = "POST" Then dim oConnDbMUDP set oConnDbMUDP = server.CreateObject("ADODB.connection") oConnDbMUDP.Mode = 3 'allow writable oConnDbMUDP.CursorLocation = 3 oConnDbMUDP.ConnectionTimeout = 600 oConnDbMUDP.CommandTimeout = 600 oConnDbMUDP.Open(SESSION("g_strDataConn")) dim file file = request.Form("file_name") ' 普通变量赋值不用set dim approval_value approval_value = request.form("btnSubmit") ' 字符串变量赋值去掉set if Approval_value = "APPROVE" then v_strMsg = "Upload Merchant Telah diapprove dan telah diinsert ke database" else v_strMsg = "Upload Merchant Telah direject dan telah diinsert ke database" end if End If
方案2:保留JS提交逻辑,新增隐藏域传递值
如果你必须保留现有的JS提交逻辑,可以新增一个专门存储审核状态的隐藏域,点击按钮时先给隐藏域赋值再提交表单:
- 表单内新增隐藏域
<!-- 新增隐藏域存储审核状态 --> <input type="hidden" name="approval_status" id="approval_status" value=""> <input class="button" type="button" name="btnSubmit" value="REJECT" onClick="frmReject()" > <input class="button" type="button" name="btnSubmit" value="APPROVE" onClick="frmSubmit()" >
- 修改JS提交函数
function frmSubmit(){ document.getElementById('approval_status').value = 'APPROVE'; document.frmInput.submit(); } function frmReject() { document.getElementById('approval_status').value = 'REJECT'; document.frmInput.submit(); }
- 后端直接读取隐藏域的值即可
dim approval_value approval_value = request.form("approval_status")
内容的提问来源于stack exchange,提问作者Romli Eko
相关产品推荐
相关产品推荐

