2009-09-21 43 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

相關問題