2

我想通过查询字符串将隐藏字段中的查询从 1 页传递到另一页。谁能帮我解释一下逻辑?

4

6 回答 6

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

处理页面.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 );
于 2009-09-21T20:16:12.710 回答
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>
于 2009-09-21T17:38:10.450 回答
0
<form method="get">
于 2009-09-21T17:03:12.407 回答
0

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

另见杰里米·斯坦的回答。

于 2009-09-21T17:04:09.010 回答
0

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

于 2009-09-21T17:05:43.060 回答
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>

上面会将调用的客户端 JavaScript 变量设置为 POST 之后的myHiddenClientValue值。'myHiddenServerValue'

这可能是个坏主意,因为如果myHiddenServerField包含单引号或换行符,那么在客户端上设置它page2.aspx可能会失败。在客户端 JavaScript 中嵌入 ASP.NET 服务器变量和在客户端 JavaScript嵌入 ASP.NET 服务器变量,第 2 部分专门处理这些问题,并通过确保写入客户端的值被正确转义的服务器端类来解决这些问题。

于 2009-09-21T18:16:06.003 回答