0

我有几个带有一些链接的 Portlet,我想要的只是隐藏 URL 参数。所以我认为包含一些jQuery代码会很容易,它为每个构建一个表单并在其上绑定一个点击事件以提交表单。

这不起作用。由于某种原因未命中操作请求。

有没有人对隐藏 URL 参数有不同的建议?

4

3 回答 3

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>
于 2009-11-11T17:53:09.557 回答
1

默认情况下,链接会触发GET请求。GET如果不通过 URL 传递参数,您将无法触发 HTTP请求。唯一能做到这一点的是 HTTP POST。然后所有参数都包含在请求正文中。但是您需要用带有按钮的表单替换所有链接,并且您需要修改服务器端代码,以便它侦听POST请求而不是GET请求以相应地采取行动。

Javascript 也可以在“后台”的帮助下触发 GET 请求XMLHttpRequest,但是当客户端禁用 JS 时,您的应用程序将中断或仍然显示参数。此外,客户端对 JS 代码具有完全控制权,因此它不一定要对客户端“隐藏”参数,而只是从浏览器地址栏中“隐藏”参数。

于 2009-11-11T17:18:39.563 回答
0

您可以使用 XMLHttpRequest 隐藏 URL 参数或使用 servlet 容器的会话变量。

也许您可以使用编码 url 向最终用户显示复杂的数据。

祝你好运

于 2009-11-12T04:37:32.877 回答