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

How to pass variable from hidden input box to another page

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

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

当我点击“打开页面 2”按钮时,它没有获取 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();"/>

谢谢。

首先,确保您的元素位于 METHOD 为 POST

的表单块中

其次,你的元素

<input type="hidden" name="FormID" value="<% objRS("Form_id")%>

需要

<input type="hidden" name="FormID" value="<%= objRS("Form_id")%>" />

<%= 是 shorthand 对于 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>

由于您似乎在尝试打开弹出窗口 window,因此我添加了第二个答案,因为您实际上并未发布任何数据。如果要使用弹出窗口,最简单的方法是将数据放在查询字符串中,如下所示:

function openwin()
{window.open("Page2.asp?formID=" + document.frmReport.FormID.value, "mywindow","width=500,height=400"):}

现在,我注意到您正在使用循环生成 formID 并为每个字段使用相同的名称。所以你需要遍历一组字段,获取每个值,并将其作为查询字符串中的一个字符串发送:

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 注入,但这应该让你开始。