我想通过查询字符串将隐藏字段中的查询从1页传递到另一页。 任何人都可以帮我解决逻辑问题吗?
答案 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 JavaScript和Embedding ASP.NET Server Variables in Client JavaScript, Part 2专门针对这些问题进行处理,并使用服务器端类来解决这些问题,以确保正确转义写入客户端的值。