2

私は3つのボタンを持っています(画像リンク、最終的にはjavascriptまたはもっと良いものに進化します)

これらの各ボタンはハンドラー スクリプトに値を送信する必要があります。ハンドラー スクリプトは、ボタン 1 が押された場合は選択肢 1 を実行し、ボタン 1 が押された場合は選択肢 2 を実行します。

これを行う最善の方法は何だろうと思っています。GET を使用したくありません。可能であれば POST を使用したいのですが、そうではないと思います。Cookie についても考えましたが、JS 関数を呼び出してリンク経由で Cookie を作成できても、同じクリックで処理のために PHP ページに移動できないという問題があります。

ユーザーがボタン img をクリックすると、ハンドラー スクリプトに移動するように動作しますが、ハンドラーは、ユーザーがそこにいることに気付く前にリダイレクトします。

繰り返しますが、これはフォームではありません。ハイパーリンクを使用する必要があります。選択肢ごとに異なるページを用意することもできると思いますが、それは効率的ではないと思います。

ありがとう!

4

4 に答える 4

2

POST を使用して変数を渡したい場合は、ページにフォームを作成し、onClick でリンクに JavaScript コードを実行させることができます。変数を目的の値に設定してから、フォームを送信します。重要な行は次のようになります。

document.getElementById("user_choice").value = 2;   // or whatever the value for this link is
document.getElementById("my_form").submit();
于 2012-04-18T21:43:58.010 に答える
1

JavaScript を使用する場合は、jQueryをご覧ください。jQuery の click-methodを使用すると、要素のクリックを簡単に処理できます。

次の HTML があるとします。

<div id="target">
  Click here
</div>
<div id="other">
  Trigger the handler
</div>

jQuery を使用すると、target というラベルの付いた要素のクリックを簡単に追跡できます。

$("#target").click(function() {
  alert("Handler for .click() called.");
});

クリックを直接 POST または GET したくない場合は、クリックされた要素に基づいて JavaScript 変数を設定する jQuery クリック ハンドラーを登録することをお勧めします。

jQuery のクリック ハンドラは、フォームだけでなく、任意の要素に登録できることに注意してください。さらに、たとえば、上記のクリック ハンドラーはページをサーバーに POST または GET しないことに注意してください。

さらに、ブラウザがフォームを送信しないようにする方法については、こちらをご覧ください:クリック イベント リスナーに 'return false' を追加するとどうなりますか?

JavaScript よりもさらに優れているのはCoffeScript です。これはJavaScript にコンパイルされますが、ライブがはるかに簡単になります。試してみる!

于 2012-04-18T21:43:51.557 に答える
1

画像リンクを次のように変更できます。

<form method="post" action="blah">
    <input type="hidden" name="function" value="function1" />
    <input type="image" scr="whatever" />
</form>

このように、それらはまだ画像のように見えますが、実際には、必要なものが含まれている投稿フォームです。とにかく簡単な方法です。より難しい方法は、AJAX を使用することです。

于 2012-04-18T21:43:16.807 に答える
0

AJAXはどうですか?それはあなたの問題に最適な選択であり、ボーナス部分は投稿も使用できることです。

于 2012-04-18T21:41:36.557 に答える