我有几个带有一些链接的 Portlet,我想要的只是隐藏 URL 参数。所以我认为包含一些jQuery代码会很容易,它为每个构建一个表单并在其上绑定一个点击事件以提交表单。
这不起作用。由于某种原因未命中操作请求。
有没有人对隐藏 URL 参数有不同的建议?
<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>
默认情况下,链接会触发GET
请求。GET
如果不通过 URL 传递参数,您将无法触发 HTTP请求。唯一能做到这一点的是 HTTP POST
。然后所有参数都包含在请求正文中。但是您需要用带有按钮的表单替换所有链接,并且您需要修改服务器端代码,以便它侦听POST
请求而不是GET
请求以相应地采取行动。
Javascript 也可以在“后台”的帮助下触发 GET 请求XMLHttpRequest
,但是当客户端禁用 JS 时,您的应用程序将中断或仍然显示参数。此外,客户端对 JS 代码具有完全控制权,因此它不一定要对客户端“隐藏”参数,而只是从浏览器地址栏中“隐藏”参数。
您可以使用 XMLHttpRequest 隐藏 URL 参数或使用 servlet 容器的会话变量。
也许您可以使用编码 url 向最终用户显示复杂的数据。
祝你好运