2016-10-24 2 views
2

클래스가 myButton 인 버튼이 여러 개 있습니다. 각 버튼에는 클릭시 서버로 전송되는 값이 있습니다. 버튼의 대상 URL이 생겼 : 나는 버튼을 클릭 한 후클릭시 목표 URL에 GET 매개 변수를 입력하십시오.

http://mysite/test/test.html?cid=15 

에서, follwing을 GET 매개 변수는 URL에 추가되어야 다음 버튼을 제출해야합니다

mySessionVar=1 

그래서 새로운 URL은 다음과 같아야합니다

http://mysite/test/test.html?cHash=d009eb3f9f4e1020435b96a8f7251ad5&mySessionVar=1 

를 내가 주입해야 할 이유는 무엇입니까?

저는 fluid으로 일하고 있습니다. AFAIK에서는 JavaScript로 유체 태그를 조작 할 수 없습니다. 그러나 유체 태그 arguments 속성에 sessionStorage 항목 값을 추가해야합니다.

내 유체 코드 :

<f:link.action controller="Download" action="download" arguments="{cid: category.uid}" class="myButton">Download</f:link.action> 

그래서 내 시도가 보내 다음 버튼의 대상 URL에 GET 매개 변수로 내 sessionStorage 항목을 추가하는 것입니다, 예를 들면 :

$(".myButton").on 
(
    "click", 
    function(event) 
    { 
     //First prevent the default event 
     event.preventDefault(); 

    ...inject the sessionStorage item as GET parameter to the target URL of the button, then do whatever the button would do normally... 

     //Go to new URL 
     window.location.replace(NEW URL); 
    } 
); 

이인가 가능한?

편집 :

<a class="myButton" href="/de/mysite/test/test.html?tx_mydownloads_myfilelist%5Bcid%5D=15&amp;&amp;tx_mydownloads_myfilelist%5Baction%5D=download&amp;tx_mydownloads_myfilelist%5Bcontroller%5D=Download&amp;cHash=d009eb3f9f4e1020435b96a8f7150ad5">Download</a> 

편집 : 내가 다른 생각을 가지고, 어쩌면 난 그냥 어떻게 든 대상 URL을 읽을 수, 다음에 나의 새로운 GET의 PARAM를 추가이 버튼의 렌더링 된 HTML이 같은 모습입니다 그 URL을 window.location.replace으로로드 하시겠습니까? 이 링크에 아무런 이전 쿼리 문자열 존재하고 추가 할 때이 또한 사건을 처리

$('.myButton').on('click', function(e) { 

    e.preventDefault(); 

    var href = $(this).attr('href'), 
     queryString = 'mySessionVar='+sessionStorage.getItem("myItem"), 
     newHref; 

    if (href.indexOf('?') !== -1) { 

     newHref = href + '&' + queryString; 

    } else { 

     newHref = href + '?' + queryString; 
    } 

    window.location.href = newHref; 
}); 

을 :

+1

버튼의 렌더링 된 HTML이 어떻게 보이는지 추가 할 수 있습니까? –

+0

클릭 이벤트의 바인딩을 해제하는 이유는 무엇입니까? – WebKenth

+1

@JohannesStadler 렌더링 된 버튼의 모습을 추가했습니다. WebKenth, 나는 먼저 기본 동작을 방지하고 다시 허용하고 싶습니다. 그렇게하지 않으면 확실하지 않습니다. – Black

답변

4

당신은 실제로 단지 버튼에서 href를 사용과 같이, window.location.href을 공급하는 데 사용할 수 있습니다 & 대신 ?으로 표시되지만 앱에서 발생하지 않는 경우 해당 부분을 생략 할 수 있습니다. 당신의 클릭 핸들러 함수 (기본 이벤트 핸들러 전에 호출되기 때문에, 당신은 기본을 방지 할 필요가 없습니다

$('.myButton').on('click', function(e) { 
    $(this).attr('href', $(this).attr('href') + "&mySessionVar="+ sessionStorage.getItem('myVar'); 
}); 

:

+1

실제로이 답변은 내 답변보다 더 마음에 듭니다. @EdwardBlack이 답변을 사용하십시오! :) –

+0

그 방법은 내가 어떻게 해결했는지와 비슷하지만 한 가지 문제가 있습니다.'mySessionVar = 1'을''mySessionVar = '+ sessionStorage.getItem ("myItem")으로 대체하십시오. – Black

+0

맞아요. 그것. :) – ppajer

0

다음 조각은 href 속성에 mySessionVar=1 매개 변수를 추가하기에 충분합니다 대략 말하고있는 사람 : href 속성을 읽고로드하십시오.

관련 문제