showMessage.jsp
タグだけを使用してPOSTフォームを<a href="...">
に送信するにはどうすればよいですか?
<form action="showMessage.jsp" method="post">
<a href="showMessage.jsp"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
代わりにボタンを使用する場合、JavaScriptは必要ありません。
<form action="your_url" method="post">
<button type="submit" name="your_name" value="your_value" class="btn-link">Go</button>
</form>
リンクのようにボタンをスタイルする を使用できます。例:
.btn-link {
border: none;
outline: none;
background: none;
cursor: pointer;
color: #0000EE;
padding: 0;
text-decoration: underline;
font-family: inherit;
font-size: inherit;
}
submit
オブジェクトでJavascript form
関数を使用する必要があります。他の functions を見てください。
<form action="showMessage.jsp" method="post">
<a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
これにはjavascriptを使用する必要があります。
<form id="form1" action="showMessage.jsp" method="post">
<a href="javascript:;" onclick="document.getElementById('form1').submit();"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
あなたがそれを達成するためにMVCを使用する場合-あなたはこのような何かをする必要があります
<form action="/ControllerName/ActionName" method="post">
<a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
私はここでいくつかの例を試しましたが、MVCが投稿しても害がないとは考えていませんでした。
次に、コントローラーのアクションで、その上に<HTTPPost>
を配置します。一番上に<HTTPGET>
がない場合でも動作すると思いますが、明示的に配置するほうが少し安全だと思います。
<a href= ..
をPOSTメソッドにだます方法は本当にないようです。ただし、ページのCSSにアクセスできる場合は、代わりにフォームを使用してこれを置き換えることができます。
残念ながら、CSSのボタンをアンカータグとしてスタイリングするだけの明らかな方法は、ブラウザごとに<button value= ...
を異なる方法で処理するため、クロスブラウザ互換ではありません。
Incorrect:
<form action='actbusy.php' method='post'>
<button type='submit' name='parameter' value='One'>Two</button>
</form>
上記の例では、FireFoxで 'Two'を表示して 'parameter:One'を送信しますが、IE8では 'One'を表示し、 'parameter:One'も送信します。
回避策は、データを送信するために非表示の入力フィールドを使用し、データを送信するためだけにボタンを使用することです。
<form action='actbusy.php' method='post'>
<input class=hidden name='parameter' value='blaah'>
<button type='submit' name='delete' value='Delete'>Delete</button>
</form>
このメソッドには、 'parameter:blaah'に加えて、POSTの余剰パラメータとして 'delete:Delete'も配信されるという副作用があることに注意してください。
(上記のように)一部のブラウザーではボタンラベルとして別のブラウザーが表示され、別のブラウザーではボタンラベルとして表示されるため、タグ間のvalue属性とボタンラベルを両方とも同じように保持します(この場合は「削除」)。