如何showMessage.jsp
仅使用<a href="...">
标签提交POST表单?
<form action="showMessage.jsp" method="post">
<a href="showMessage.jsp"><%=n%></a>
<input type="hidden" name="mess" value=<%=n%>/>
</form>
Answers:
如果使用按钮代替,则不需要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;
}
a
标签。
button
:IE在您使用时会强制3D“按”效果button
,这很容易避免a
。如果您display: inline-table
使用设置按钮样式,则使用a
以避免这种效果的唯一方法是,因为的常规解决方法position: relative
不起作用。
如果您使用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中显示“二”并传输“ parameter:One”,而在IE8中将显示“一”并传输“ 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属性和按钮标签都相同(在这种情况下为“删除”),因为(如上所述)某些浏览器将显示一个,而另一些浏览器将另一个显示为按钮标签。
<button value="Bad">Good</button>
在IE7中尝试过,它显示“良好”。