2009-09-21 92 views
2

我想通过查询字符串将隐藏字段中的查询从1页传递到另一页。 任何人都可以帮助我摆脱逻辑吗?在查询字符串中将隐藏字段从一个页面传递到另一个页面

+0

我想这取决于语言颇有几分。你想用JavaScript获取一个字段的值,然后对另一个页面进行AJAX调用? – 2009-09-21 17:03:17

+0

我想从aspx.cs页面传递隐藏的字段值,并在另一个aspx页面的javascript中获取相同的值。 – 2009-09-21 17:08:47

回答

0
<form method="get"> 
+0

谢谢杰里米。所以你建议它要求我发布一个表单并在页面中放置隐藏的字段。如果你能更精进一点,这将会非常有帮助。 – 2009-09-21 17:14:59

+0

更多详细资料:http://www.w3.org/TR/html401/interact/forms.html – 2009-09-21 17:55:33

0

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

另请参见杰里米斯坦的答案。

+0

感谢您的回应。 你能说得更具描述性吗? 我想从一个aspx.cs页面传递一个隐藏变量的值,并且想要在另一个aspx页面的javascript fucntion中获取它。 – 2009-09-21 17:16:49

0

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

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> 
+0

非常感谢Tony的回复。但我没有关于jquery的知识。可以告诉我如何在正常的javascript中获取值? – 2009-09-21 18:11:38

+0

感谢Topher的回复。但是,如果我的页面是page2.aspx.cs,即页面背后的代码,你能告诉我该写什么?我们不能在页面后面的代码中写入表单标签。我没有权限修改aspx页面。请给出你的建议 – 2009-09-22 02:02:24

+0

对不起,archana,我真的不是很了解你,但看起来像格兰特瓦格纳回答你下面:-) – 2009-09-22 16:00:39

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变量称为myHiddenClientValue到的值POST后的'myHiddenServerValue'

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

+0

感谢加纳的答复。 但是你能告诉我,如果我的页面是page1.aspx.cs,即页面后面的代码,我该写些什么?我们不能在页面后面的代码中写入表单标签。我没有权限修改aspx页面。 请给出您的建议。 – 2009-09-22 02:01:34

+0

@archana:查看> * page1.aspx *的来源,找到您想要捕获的字段的'name =“the_name”',然后您可以使用''on * page2.aspx *将值分配给客户端JavaScript变量。 – 2009-09-22 14:23:19

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 - 假设表单的方法设置为“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); 
+0

非常感谢您的回复。 但你能告诉我,如果我的页面是hiddenFieldPage.aspx.cs,即页面后面的代码,我应该写些什么?我们不能在页面后面的代码中写入表单标签。我没有权限修改aspx页面。 请给出您的建议。 – 2009-09-22 02:00:49

+0

你确定你需要把值放在查询字符串中吗?Session对象可能是你之后的: Session [“key”] =“value”; 如果你在代码隐藏的会话中放置一个值,你可以在其他页面上检索它。 – ctford 2009-09-22 11:28:50

相关问题