在查询字符串中将隐藏字段从一个页面传递到另一个页面

时间:2009-09-21 16:58:39

标签: query-string hidden-field

我想通过查询字符串将隐藏字段中的查询从1页传递到另一页。 任何人都可以帮我解决逻辑问题吗?

6 个答案:

答案 0 :(得分:2)

值得花时间学习jQuery。它不是很复杂,它使得编写javascript变得更加容易。还有许多jQuery插件,例如jquery.url

此外,正如其他海报所建议的那样,如果您关心它是否显示给用户,您可能不希望将隐藏字段的值放在查询字符串中。但是,如果数据存在于隐藏字段中,则用户始终可以在需要查看时找到它。

如果你确实想把隐藏字段放在查询字符串中,然后通过非jQuery javascript提取它:

<强> hiddenFieldPage.aspx

此表单将在提交时将用户带到processingPage.aspx?datum = someValue。如果不需要同时提交任何其他内容,您也可以使用普通链接。

<form method="GET" action="processingPage.aspx">
    <input type="hidden" name="datum" value="someValue">
    <input type="submit">
</form>

或者,从代码隐藏中插入值:

RegisterHiddenField("datum", "someValue");

<强> processingPage.aspx

此脚本将弹出一个警告框,其中包含URL中“datum”的值 - 假设表单的方法设置为“GET”:

    <script type="text/javascript">

        function getUrlParam( key ) {

            // Get the query and split it into its constituent params
            var query = window.location.search.substring(1);
            var params = query.split('&');

            // Loop through the params till we find the one we want
            for( var i in params ) { 
                var keyValue = params[i].split('=');
                if( key == keyValue[0] ) {
                    return keyValue[1];
                }
            }

            // Didn't find it, so return null
            return null;
        }

        alert( getUrlParam("datum") );
    </script>

如果表单的方法设置为“POST”(通常在ASP.NET中),那么“datum”将不在查询字符串中,您将不得不再次将其放在页面上:

RegisterHiddenField( "datum", Request.Form["datum"] );

要检索第二页上的隐藏值:

var datum = document.Form1.item("datum").value;
alert( datum );

答案 1 :(得分:1)

您可以使用action参数在一个页面上轻松提交指向其他页面的表单。例如,在page1.aspx内部添加以下内容:

<form action="page2.aspx" method="GET">
  <input type="hidden" name="username" value="joenobody" />
  <input type="submit" />
</form>

由于您使用“GET”作为方法而不是“POST”,因此您可以使用Javascript来解析URL并获取传递的值。或者,您可以使用ASPX将“用户名”字段的值存储在页面上的其他位置。我不知道ASPX(或ASP,或任何微软真的),但如果你能找到一种方法来输出类似下面的东西(并使用jQuery),它可能会做你需要的。老实说,这听起来好像你正在做一些错误的事情。你能否修改一下你的问题,使其更具体地说明你试图完成的一般目标是什么?

<div id="some_div"><%= Request.form("username") %></div>

<script type='text/javascript'>
  var value_needed = $('#some_div').html();
</script>

答案 2 :(得分:0)

<form method="get">

答案 3 :(得分:0)

如果在HTML表单上使用method =“get”,那么该表单中的任何隐藏输入都将转换为查询参数。

另见Jeremy Stein的回答。

答案 4 :(得分:0)

假设您的意思隐藏在HTML表单中,您的字段将在提交表单时与所有其他字段一起提交。如果您通过GET提交,那么您的“隐藏”字段将以纯文本形式显示在URL中。如果您不希望用户可以访问隐藏字段中的数据,请不要在该字段中添加可理解的值。

答案 5 :(得分:0)

如果您使用的是aspx,则无需使用JavaScript解析查询字符串,甚至无需使用<form method="GET" ...>。您可以将表单发布到第二个aspx页面,在C#或VB中提取值,然后将其写入客户端JavaScript变量。像这样:

<强> page1.aspx这个

<form method="POST" action="page2.aspx">
    <input type="hidden" name="myHiddenServerField" value="myHiddenServerValue">
    <input type="submit">
</form>

<强> page2.aspx

<script type="text/javascript">
var myHiddenClientValue = '<%= Request.Form['myHiddenServerField']; %>';
</script>

以上会在POST后将名为myHiddenClientValue的客户端JavaScript变量设置为'myHiddenServerValue'

这可能是一个坏主意,因为如果myHiddenServerField包含单引号或换行符,则在page2.aspx中在客户端上设置它可能会失败。 Embedding ASP.NET Server Variables in Client JavaScriptEmbedding ASP.NET Server Variables in Client JavaScript, Part 2专门针对这些问题进行处理,并使用服务器端类来解决这些问题,以确保正确转义写入客户端的值。

相关问题