用户登录其控制面板并查看其收到的消息。在每条消息附近都有一个“回复”按钮。实现该按钮的正确方法是什么?
我看到三个主要选项:
使用链接:
<a href="customer.php?reply&messageid=1234">Reply</a>.
缺点:
使用按钮
<button onclick="location.href='customer.php?reply&messageid=1234'">Reply</button>`
缺点:
使用包含<input type="submit">
的表单
<form action="customer.php?reply" method="get">
<input name="messageid" type="hidden" value="1234" />
<input type="submit" value="Reply" />
</form>
缺点:
其他一些说明:
您会选择哪一个?为什么?
UPD。好吧,我决定使用链接。谢谢大家的讨论!
答案 0 :(得分:9)
我肯定会使用链接:渐进式增强。
您希望即使Javascript关闭也可以使用该按钮(请记住:在页面加载期间,每个用户都是非JavaScript用户。如果他们使用的是慢速连接(例如移动设备),他们应该能够在看到按钮后立即回复。
样式是一个非问题(你不会使用默认的按钮样式,不是吗?)。
当用户未提交任何内容时使用POST确定是错误的。即使使用GET,它仍然不是真正的材料......
答案 1 :(得分:4)
相同地设置<a>
和<button>
的样式非常容易,只需使用公共类名称即可。 <input type="button">
可能有点棘手,但您不需要使用它。
您的代码选择永远不会由您的预期演示文稿决定,但 元素 链接应标记为
<a>
。
答案 2 :(得分:1)
我同意POST
错了。因此,请将表单设置为使用method="get"
。只使用一个表单,省略隐藏的字段。使用<button>
,显示的文本可能与提交的值不同。
<form action="customer.php" method="get">
<input type="hidden" name="reply" />
<div class="message">
<div class="messageBody">..</div>
<button name="messageid" value="1234">Reply</button>
</div>
<div class="message">
<div class="messageBody">..</div>
<button name="messageid" value="1235">Reply</button>
</div>
...
</form>
答案 3 :(得分:1)
所有方法都是正确的,但方法2只有在您可以安全地忽略非JavaScript浏览的假设下才是正确的。
关于表格的假设和评论是不正确的,或者至少是误导性的。表单不需要涉及用户输入;表格可以用于例如提交以前收集的数据,除了提交字段外没有其他字段。即使不改变任何东西,也可以使用POST方法,例如由于输入数据的数量(因为GET数据的上限相当低);此外,问题中提供的表单使用默认方法GET。
否则,这主要是一个非建设性的问题,需要讨论和论证而不是技术解决方案。