我正在尝试从隐藏的输入文本框获取值到另一个页面,但它不起作用。如何将变量从隐藏的输入框传递到另一个页面?
Page1.asp
<input type="hidden" name="FormID" value="<% objRS("Form_id")%>
...
<input type="hidden" name="FormID" value="<%= nFormID %>">
<input type="button" value="Open Page2" onclick=openwin();"/>
Page2.asp
<%
iFormID = Request.Form("FormID")
sSQL = "select * from Form where Form_id = " & iFormID
当我点击Button Open Page2时,它没有获得FormID的值。 如何修复它以从Page1.asp获取FormID?
更新:当我尝试使用此JS添加按钮时,它无法从Page1.asp获取变量 我在page1.asp上添加了这个:
function openwin()
{window.open("Page2.asp","mywindow","width=500,height=400"):}
<input type="hidden" name="FormID" value="<%= nFormID %>">
<input type="button" value="Open Page2" onclick=openwin();"/>
感谢。
答案 0 :(得分:1)
首先,确保您的元素使用POST方法
在表单块中第二,你的元素
<input type="hidden" name="FormID" value="<% objRS("Form_id")%>
需要
<input type="hidden" name="FormID" value="<%= objRS("Form_id")%>" />
&lt;%=是Response.Write
的简写所以page1看起来像:
<form name="myForm" method="post" action="page2.asp">
<input type="hidden" name="FormID" value="<%= objRS("Form_id")%>" />
...
<input type="hidden" name="FormID" value="<%= nFormID %>">
<input type="submit" value="Open Page2" />
</form>
答案 1 :(得分:1)
由于您似乎正在尝试打开弹出窗口,我已经添加了第二个答案,因为您实际上并未发布任何数据。如果你想使用弹出窗口,最简单的方法是将数据放在查询字符串中,如下所示:
function openwin()
{window.open("Page2.asp?formID=" + document.frmReport.FormID.value, "mywindow","width=500,height=400"):}
现在,我注意到你正在使用一个循环来生成formID并为每个字段使用相同的NAME。所以你需要循环遍历这组字段,获取每个值,然后将它作为一个字符串发送到查询字符串中:
function openwin() {
var ids = '';
for( var index = 0; index < document.frmReport.FormID.length; index++ ) {
if( ids == '' )
ids += document.frmReport.FormID[ index ].value;
else
ids += ',' + document.frmReport.FormID[ index ].value;
}
window.open("Page2.asp?FormIDs=" + ids,"mywindow","width=500,height=400");
}
在Page2.asp上,您可以这样做:
iFormIDs = Request.QueryString("FormIDs")
sSQL = "select * from Form where Form_id in ( " & iFormIDs & " ) "
您会注意到我更改了sql以使用IN子句,这样您就可以获得给定的一组formID的所有记录,即使它只是一个。这显然没有考虑任何防止sql注入的安全预防措施,但这应该让你开始。