2016-07-27 36 views
0

我想使用GET方法向接收頁面發送字符串,但如果字符串包含'#',接收方頁面只能獲得子以「#」之前的字符串 如下面的例子:如何使用GET方法發送包含'#'的字符串?

<a href="test.php?q=string1#string2">test</a> 

當我點擊「測試」鏈接,打開「test.php的」頁面,其中有下面的代碼:

<?php 
if(isset($_GET["q"])) { 
echo $_GET["q"]; 
} 
?> 

它只在頁面上顯示'string1','#string2'缺失。

所以我想知道發生了什麼事情的字符串,以及如何解決這個問題。

謝謝你的幫助!

======= ===========更新

隨着@Eric Shaw和@JPDupéré的幫助下,我知道如何解決這個問題。

最簡單的方法是在使用get方法之前對字符串進行編碼。

要編碼的查詢字符串,您可以:在PHP

  1. 使用urlencode(),並且urldecode()可以解碼的字符串。
  2. 在JavaScript中使用encodeURIComponent(),而decodeURIComponent()可以解碼字符串。
+1

我認爲你需要編碼你的查詢字符串。 –

回答

1

調用get之前嘗試

urlencode("string1#string2") 

+0

謝謝,這真的很有幫助。 –

1

#foo用於跳轉到頁面上的<a name="foo"/>標記,而不是在瀏覽器加載頁面時查看頁面的頂部。

#之後的東西由瀏覽器處理,而不是發送到服務器。

可以逃脫#和轉義版本將被髮送到服務器,即

<a href="test.php?q=string1%23string2">test</a> 

會做你想要什麼,我覺得

這轉義也是一種常用的技術來獲取#傳遞給重定向器的URL。

相關問題