如何将变量从隐藏的输入框传递到另一个页面

时间:2017-10-31 13:35:45

标签: asp-classic

我正在尝试从隐藏的输入文本框获取值到另一个页面,但它不起作用。如何将变量从隐藏的输入框传递到另一个页面?

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();"/>

感谢。

2 个答案:

答案 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注入的安全预防措施,但这应该让你开始。