Inject GET parameter to target URL of a button, on click
fluid, javascript, jquery, php
Solution
You can indeed just use the `href` from the button and use it to feed `window.location.href`, like so:
$('.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;
});
This also handles the case when there is no previous query string present on the link and appends it with `?` instead of `&`, but that part can be omitted if that won't happen in your app.
Problem
I have multiple buttons with the class `myButton`. Each button has a value which is send to a server on click. The target URL of the button does look like this: ``` http://mysite/test/test.html?cid=15 ``` After I click on the button, the following GET parameter should be added to the URL and then the button should be submitted: ``` mySessionVar=1 ``` So the new URL should look like this: ``` http://mysite/test/test.html?cHash=d009eb3f9f4e1020435b96a8f7251ad5&mySessionVar=1 ``` Why I have to inject it? I am working with `fluid`. AFAIK it is not possible to manipulate fluid tags with JavaScript. However, I need to add a `sessionStorage` item value to the fluid tags `arguments` attribute. My fluid code: ``` <f:link.action controller="Download" action="download" arguments="{cid: category.uid}" class="myButton">Download</f:link.action> ``` So my attempt is to append my sessionStorage item as GET parameter to the target URL of the button and then send it, e.g.: ``` $(".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); } ); ``` Is this possible? EDIT: This is how the rendered HTML of the buttons looks like: ``` <a class="myButton" href="/de/mysite/test/test.html?tx_mydownloads_myfilelist%5Bcid%5D=15&&tx_mydownloads_myfilelist%5Baction%5D=download&tx_mydownloads_myfilelist%5Bcontroller%5D=Download&cHash=d009eb3f9f4e1020435b96a8f7150ad5">Download</a> ``` EDIT: I have another idea, maybe I could just read the target URL somehow, then add my new GET param to it and then load that URL with `window.location.replace`?