我有几个Portlet,里面有一些链接,我想要的就是隐藏URL参数。所以我认为包含一些jQuery代码很容易,它们为每个构建一个表单并在其上绑定一个click事件来提交表单。
这不起作用。由于某种原因,操作请求未被命中。
是否有人对隐藏网址参数有不同的建议?
答案 0 :(得分:2)
<a href="#" onclick="JavaScript: handleThisLink();"> description of link </a>
<form name="mydataform" id="mydataform" action="/actionurlonyoursite" method="post">
<input type="hidden" name="myparam" value="" />
</form>
<script type="text/javascript">
function handleThisLink()
{
// access the hidden element in which you wish to pass the value of the parameter
dojo.byId("myparam").value = "myvalue";
// the value might be precomputed (while generating this page) or
// might need to be computed based on other data in the page
// submit the form by HTTP POST method to the URL which will handle it.
document.forms['mydataform'].submit();
// also possible to actually send a background AJAX request and publish
// the response to some part of the current page, thus avoiding full
// page refresh
// I used dojo.byId() as a shortcut to access the input element
// this is based on dojo toolkit.
}
</script>
答案 1 :(得分:1)
默认情况下链接fire GET
个请求。您无法在不通过URL传递参数的情况下触发HTTP GET
请求。唯一能做到这一点的是HTTP POST
。然后,所有参数都包含在请求正文中。但是您需要通过带有按钮的表单替换所有链接,并且您需要修改服务器端代码,以便它监听POST
个请求而不是GET
请求以相应地执行操作。
Javascript也可以在XMLHttpRequest
的帮助下在“后台”触发GET请求,但是当客户端禁用JS时,您的应用程序将中断或仍然显示参数。此外,客户端可以完全控制JS代码,因此它不一定从客户端“隐藏”参数,而只能从浏览器地址栏中“隐藏”。
答案 2 :(得分:0)
您可以使用XMLHttpRequest来隐藏URL参数或使用servlet容器的会话变量。
也许您可以使用编码网址向最终用户显示复杂数据。
祝你好运