2012-01-27 39 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。如果%指示编码字符的开头或文字%,将无法辨别。

如果你正在构建的动态链接,那么你已经涉及一种编程语言。添加一个编码路由到任何语言都是微不足道的。