フォームをアンカー付きの POST スタイルで送信することは可能ですか?
<form>
<input name="foo" />
<input name="bar" />
<a href="#">Submit this form</a>
</form>
元の質問は、Martijnによるこの回答でも説明されています
メソッドとしてハイパーリンクを使用して値を渡すことは可能ですPOST
か?? 画像をクリックしたときに値を次のページに渡したい。
フォームをアンカー付きの POST スタイルで送信することは可能ですか?
<form>
<input name="foo" />
<input name="bar" />
<a href="#">Submit this form</a>
</form>
元の質問は、Martijnによるこの回答でも説明されています
メソッドとしてハイパーリンクを使用して値を渡すことは可能ですPOST
か?? 画像をクリックしたときに値を次のページに渡したい。
元の回答を以下に残しておきます。アンカーがポストコールを実行できない理由です。ただし、質問は言い換えられています。この回答はその質問に答えます。
アンカーを使用して送信することはできませんが、送信をトリガーするのはやや一般的な方法です。
$('a#myAnchor').click(function(){ $('#myForm').submit() })
/// Or an image, doesn't really matter for jQuery:
$('img#myImg').click(function(){ $('#myForm').submit() })
// Or native js:
document.getElementById('myImg').onclick = function(){ document.getElemetById('myForm').submit() });
送信をトリガーする要素がフォーム内にある場合:
$('element').click(function(){ $(this).closest('form').submit() });
いいえ。アンカーは GET です。なぜなら、アンカーは URL に送信するためです。これにより、URL は GET になり、POST は行われません。
POST は、ポスト形式で送信されるデータであり、サーバーが処理できる方法でエンコードされます (画像などにとって重要)
この他のトピックでは、この返信でGETとPOSTの違いについて説明しています
必要な場合、つまり本当に必要な場合は、jQuery を使用して次の行に沿った投稿を偽造できます。
// THIS IS AN UNTESTED DRAFT! Just to shown you a direction:
$('a').click(function(e){
e.preventDefault();
var scriptname = this.href.replace(/\??(.*)?/, ''); // remove everything after '?'
var query = this.href.replace(/(.*)\?/, ''); // remove everything before '?'
$.post(scriptname, query);
});
ただし、本当に必要な場合を除き、これを行わないでください。これによりサーバーにajaxcallが送信されるため、ページは実際には変更されません。これは悪い習慣であるため、完了時にページを変更する方法を説明するつもりはありません。jQuery POST ドキュメントでこれを理解する必要があります。