2009-11-11 3 views
0

일부 링크가 포함 된 여러 포틀릿이 있는데 원하는 것은 URL 매개 변수를 숨기는 것입니다. 그래서 각각에 대한 양식을 작성하고 양식을 제출하기 위해 클릭 이벤트를 바인드하는 jQuery 코드를 포함시키는 것이 쉽다는 생각이 들었다.내 url 매개 변수를 숨기는 방법?

이것은 작동하지 않습니다. 액션 요청이 어떤 이유로 치지 않습니다.

누구나 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

감사 - 나는 내 질문에 말했듯이 형태에 의해 이미 형태로 각 링크를 변환하지만 내 포틀릿 조치가 triggerd되지 않는다 - 왜? 나는 정말로 모른다. 모든 매개 변수가 설정되어 있고 올바르게 작동하는 것 같습니다.하지만 아무 것도 발생하지 않습니다. – onigunn

+0

다시 내 POST 대화 상자에 반응하지 않는 것 같습니다. – onigunn

+0

이것은 이상합니다. 다소 관련이없는 토론이 도움이 될 수 있습니다. DOJO 툴킷 (자바 스크립트 라이브러리)에는 dijit.layout.ContentPane이라는 위젯이 있습니다. URL을 HREF (HREF) 매개 변수로 지정할 수 있습니다. 당연히이 위젯은 GET URL 만 허용합니다. POST 작업의 결과를 내부에 넣으려면 setContent() 메서드를 사용하는 것이 좋습니다. 내 단추 처리기는 POST를 사용하여 AJAX 요청에 양식을 제출하고 응답을 수신 한 다음 내용 창에 setContent 메서드를 호출하여 응답을 배치합니다. JBoss 포털이 비슷한 일을 할 수 있는지는 모르겠습니다. –

1

링크는 기본적으로 GET 요청을 연결합니다. URL을 통해 매개 변수를 전달하지 않고 HTTP GET 요청을 실행할 수 없습니다. 이렇게 할 수있는 것은 HTTP POST뿐입니다. 모든 매개 변수는 요청 본문에 포함됩니다. 그러나 모든 링크를 단추로 폼으로 바꾸고 서버 측 코드를 수정하여 GET 요청 대신에 POST 요청을 수신하도록 처리해야합니다.

자바는 XMLHttpRequest의 도움으로 "배경"에서 GET 요청을 실행할 수도 있지만 클라이언트가 JS를 사용하지 않도록 설정하면 응용 프로그램이 매개 변수를 중단하거나 계속 표시합니다. 또한 클라이언트는 JS 코드를 완전히 제어 할 수 있으므로 브라우저 주소 표시 줄에서만 클라이언트의 매개 변수를 "숨길"필요는 없습니다.

0

XMLHttpRequest를 사용하여 URL 매개 변수를 숨기거나 서블릿 컨테이너의 세션 변수를 사용할 수 있습니다.

아마도 encode URL을 사용하여 최종 사용자에게 복잡한 데이터를 표시 할 수 있습니다.

행운을 당신의 응답 shailesh에 대한

관련 문제