Wie kann ich ein POST-Formular showMessage.jsp
nur mit dem <a href="...">
Tag senden ?
<form action="showMessage.jsp" method="post">
<a href="showMessage.jsp"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
Antworten:
Kein JavaScript erforderlich, wenn Sie stattdessen eine Schaltfläche verwenden:
<form action="your_url" method="post">
<button type="submit" name="your_name" value="your_value" class="btn-link">Go</button>
</form>
Sie können eine Schaltfläche so gestalten, dass sie wie ein Link aussieht , zum Beispiel:
.btn-link {
border: none;
outline: none;
background: none;
cursor: pointer;
color: #0000EE;
padding: 0;
text-decoration: underline;
font-family: inherit;
font-size: inherit;
}
a
Tag verwendet.
button
: IE erzwingt 3D-Druckeffekte bei der Verwendung button
, was bei Verwendung leicht vermieden werden kann a
. Wenn Sie Ihre Schaltfläche mit formatieren display: inline-table
, a
ist die Verwendung die einzige Möglichkeit, diesen Effekt zu vermeiden, da die normale Problemumgehung von position: relative
nicht funktioniert.
Sie müssen die Javascript- submit
Funktion für Ihr form
Objekt verwenden. Schauen Sie sich andere Funktionen an .
<form action="showMessage.jsp" method="post">
<a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
Wenn Sie MVC verwenden, um dies zu erreichen, müssen Sie so etwas tun
<form action="/ControllerName/ActionName" method="post">
<a href="javascript:;" onclick="parentNode.submit();"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
Ich habe hier nur einige Beispiele durchgesehen und nicht gesehen, dass die MVC dachte, es würde nicht schaden, sie zu posten.
Dann würde ich bei Ihrer Aktion im Controller einfach <HTTPPost>
oben drauf setzen. Ich glaube, wenn Sie es nicht <HTTPGET>
oben drauf haben, würde es immer noch funktionieren, aber es fühlt sich ein bisschen sicherer an, es explizit dort zu platzieren.
Es scheint wirklich keine Möglichkeit zu geben, das <a href= ..
in eine POST-Methode zu täuschen . Da Sie jedoch Zugriff auf CSS einer Seite haben, kann dies durch die Verwendung eines Formulars ersetzt werden.
Leider ist die offensichtliche Art, die Schaltfläche in CSS nur als Ankertag zu gestalten, nicht browserübergreifend kompatibel, da verschiedene Browser <button value= ...
unterschiedlich behandeln .
Incorrect:
<form action='actbusy.php' method='post'>
<button type='submit' name='parameter' value='One'>Two</button>
</form>
Das obige Beispiel zeigt in FireFox "Zwei" und "Parameter senden: Eins", während es in IE8 "Eins" und "Parameter: Eins" zeigt.
Der Weg dahin besteht darin, versteckte Eingabefelder für die Übermittlung von Daten und die Schaltfläche nur für die Übermittlung zu verwenden.
<form action='actbusy.php' method='post'>
<input class=hidden name='parameter' value='blaah'>
<button type='submit' name='delete' value='Delete'>Delete</button>
</form>
Beachten Sie, dass diese Methode einen Nebeneffekt hat, der neben 'parameter: blaah' auch 'delete: Delete' als überschüssige Parameter in POST liefert.
Sie möchten für eine Schaltfläche das Wertattribut und die Schaltflächenbezeichnung zwischen den Tags beibehalten (in diesem Fall 'Löschen'), da (wie oben angegeben) einige Browser einen und einige einen anderen als Schaltflächenbezeichnung anzeigen.
<button value="Bad">Good</button>
Ich habe es gerade in IE7 versucht und es wird "Gut" angezeigt.