2016-10-24 3 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); 
    } 
); 

はこれです可能?

EDIT:

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

EDIT:私は別のアイデアを持っている、多分私はちょうどそれに私の新しいGETのPARAMを追加し、何とか目標のURLを読むことができた。これは、ボタンのレンダリングされたHTMLがどのように見えるかですそのURLをwindow.location.replaceとロードしますか?

あなたが実際にちょうどボタンから hrefを使用して window.location.hrefを養うためにそれを使用するので、のようなことができ
+1

ボタンのレンダリングされたHTMLの外観を追加できますか? –

+0

なぜクリックイベントのバインドを解除していますか? – WebKenth

+1

@JohannesStadler私は、レンダリングされたボタンの外観を追加しました。 WebKenth、私は最初にデフォルトのアクションを防止し、再度それを許可したいと思いました。 – Black

答えて

4

$('.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; 
}); 

これは、リンク上に存在以前のクエリ文字列が存在しない場合を処理し、それを追加の代わりに&となりますが、その部分はアプリでは発生しない場合は省略できます。あなたのクリックハンドラ関数は(デフォルトイベントハンドラの前に呼び出されるため、あなたはデフォルトを防ぐために必要はありません

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

+1

実際に私はこの答えが私のものよりも好きです、@ EdwardBlackあなたはこれを使うべきです! :) –

+0

それは私がそれを解決した方法に似ています:)しかし、1つの問題があります。 'mySessionVar = 1'を' 'mySessionVar = '+ sessionStorage.getItem(" myItem ")に置き換えてください。 – Black

+0

あなたは正しいです。それ。 :) – ppajer

0

次のスニペットは、href属性にごmySessionVar=1パラメータを追加するのに十分でなければなりません大雑把に言うと、href属性を読み込んで読み込みます)。

関連する問題