2012-01-27 105 views
2

如何編碼顯示爲超鏈接的URL的查詢參數。客戶端URL超鏈接中查詢參數的編碼

這樣的超鏈接的例子:

<a href="http://site/page.html?param1=value1&param2=value2">MyPage</a> 

我想這樣只用HTML能力做到這一點。

我可以用HTML表單使用HTTP GET方法部分地做到這一點,但後來我看不到的超級鏈接,而是必須使用一個提交按鈕(我不想使用):

<form method="get" action="http://site/page.html"> MyPage 
<input type="hidden" name="param1" value="value1"/> 
<input type="hidden" name="param2" value="value2"/> 
<input type="submit" /> 
</form> 

請注意,查詢參數的值會動態呈現,因此可能包含必須在通過http get方法將其發送到Web服務器之前進行編碼的特殊字符。

可這僅僅使用HTML,而不需要在服務器端的編碼引入代碼來完成?

+1

即使使用表單,仍然需要對它們進行HTML編碼。 – SLaks 2012-01-27 19:13:59

+0

爲什麼你不想使用按鈕? – 2012-01-27 19:15:03

+0

使用表單,我認爲enctype屬性默認設置爲application/x-www-form-urlencoded,這就是訣竅。我想看到的超鏈接,並沒有任何按鍵,因爲我需要一個頁面和按鈕上的多個這樣的超鏈接不會好看 – nurabha 2012-01-27 19:19:01

回答

0

可以樣式的按鈕,看起來像一個超級鏈接:

input.LinkButton { 
    border: none; 
    padding: 0; 
    background: transparent; 
    color: blue; 
    text-decoration: underline; 
    display: inline; 
    cursor: pointer; 
} 

你可能也想:hover:active風格。

+0

謝謝。我會試試 – nurabha 2012-01-29 18:00:43

+0

好吧,它的工作原理。但是現在我在懸停時顯示下劃線文字裝飾時遇到了麻煩。我通過互聯網搜索了所有東西,並且好像很多瀏覽器都不支持這個屬性。我現在可能遇到瀏覽器兼容性問題 – nurabha 2012-01-30 12:26:58

+0

請嘗試使用'border-bottom'。 – SLaks 2012-01-30 14:30:20

0

你可以做到這一點使用Javascript調用encodeURIComponent()

但是,你應該做它的服務器上,以支持與禁用JavaScript的瀏覽器。

+0

的輸入標籤我認爲OP希望建立一個查詢字符串從表單字段,並將其附加到行動(即建立獲取請求),而不是uri編碼個別字段 – 2012-01-27 19:16:19

+0

我不知道OP想要什麼。這個問題很混亂。 – SLaks 2012-01-27 19:16:58

+0

對不起,你已經簡化了我的問題 – nurabha 2012-01-27 19:23:55

0

這可以使用HTML完成,而無需在服務器端編碼中引入代碼?

號鏈接需要URI。如果%指示編碼字符的開頭或文字%,將無法辨別。

如果你正在構建的動態鏈接,那麼你已經涉及一種編程語言。添加一個編碼路由到任何語言都是微不足道的。