2009-11-11 42 views
0

我已經有幾個Portlet中有一些鏈接,我只想隱藏URL參數。所以我認爲包含一些jQuery代碼會很容易,它們爲每個代碼構建一個表單並綁定一個點擊事件來提交表單。如何隱藏我的url params?

這不起作用。由於某種原因,操作請求未被命中。

有沒有人對隱藏URL參數有不同的建議?

回答

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> 
+0

謝謝您的回答SHAILESH - 就像我告訴我的問題:我已經轉化各環節的形式,但我的Portlet操作不triggerd這個形式 - 爲什麼?我真的不知道。所有參數設置好了,似乎是正確的,但沒有任何反應,我再次發現了 – onigunn 2009-11-12 08:44:34

+0

我,好像我的jboss門戶只對GET做出反應而不是POST – onigunn 2009-11-12 08:48:40

+0

這很奇怪。有些不相關的討論可能對此有所幫助。 DOJO工具包(一個JavaScript庫)有一個名爲dijit.layout.ContentPane的小部件。您可以指定一個URL(作爲HREF)參數。當然這個小部件只接受GET URL。要將POST操作的結果放入其中,方法是使用其setContent()方法。我的按鈕處理程序將使用POST在AJAX請求中提交表單,接收響應,然後調用內容窗格的setContent方法將響應放入其中。我不知道你的JBosss門戶是否可以做類似的事情。 – 2009-11-12 10:21:58

1

鏈接火災GET默認情況下請求。您無法在不通過URL傳遞參數的情況下觸發HTTP GET請求。唯一能做到這一點的是HTTP POST。所有參數都包含在請求主體中。但是您需要用按鈕替換所有鏈接,並且需要修改服務器端代碼,以便它監聽POST請求,而不是GET請求相應地執行操作。

Javascript還可以在XMLHttpRequest的幫助下僅在「後臺」中觸發GET請求,但是當客戶端禁用了JS時,您的應用程序將會中斷或仍然顯示參數。客戶端也完全控制JS代碼,所以它不一定會從客戶端「隱藏」參數,而只能從瀏覽器地址欄「隱藏」。

0

您可以使用XMLHttpRequest來隱藏URL參數或使用servlet容器的會話變量。

也許你可以使用編碼URL來向最終用戶顯示覆雜的數據。

好運