【问题标题】:Why does <button> make "GET" in Firefox/Chrome, but "POST" in Opera?为什么 <button> 在 Firefox/Chrome 中是“GET”,而在 Opera 中是“POST”?
【发布时间】:2009-10-19 11:26:41
【问题描述】:

我正在开发一个网站(ASP.NET Webform with C#),其中有一个&lt;button&gt; 元素。

这里是sn-p的代码:

<a href="ThisPage.aspx" ID="myButtonID" runat="server">
    <button>Configure new trip</button>
</a>

当我使用 Firefox 或 Chrome 时,此代码对 ThisPage.aspx 执行“GET”。实际上,这就是我想要做的。

问题是,当我使用 Opera 时,相同的代码会执行“POST”。有谁知道我应该怎么做才能使这个按钮在使用 Opera 时以相同的方式工作?

【问题讨论】:

  • 那只是......不,不要那样做。按钮不是链接,链接也不是按钮。

标签: html button opera


【解决方案1】:

可能是因为 FF/Chrome 处理对 &lt;a /&gt; 标签的点击,而 Opera 是在 &lt;button /&gt; 标签上处理的。

您正在寻找的(我猜)是将&lt;a /&gt; 标记呈现为按钮?在这种情况下,请查看this,了解如何将&lt;a /&gt; 标签设置为按钮样式

您所做的在某种程度上类似于将文本框添加到锚标记,即语义错误。

【讨论】:

【解决方案2】:

我猜它在表单标签内?

如果是这样,请尝试将表单的方法设置为“get”。

【讨论】:

  • 我的表单还有其他需要执行“POST”的按钮。有没有办法让这个按钮改为“GET”?
  • 你不能把你的页面放在一个巨大的表单中。
  • 这是一个 ASP.NET 应用程序 => 页面是一个完整的表单,它会自动 POST
  • 问题出在 ASP.NET 上。停止使用它。
  • 当然...我一直在 MVC 中工作,所以我忘记了你无法更改它。
【解决方案3】:

如果您没有进行任何 AJAX 操作,并且单击该按钮预计会导航到“ThisPage.aspx”,那么我会考虑设置 &lt;a&gt; 元素的样式 - 正如 @veggerby 所建议的那样 - 并删除&lt;button&gt; &lt;/button&gt; 元素。

但是,这可能会让用户感到困惑,他们可能不希望表单中的按钮成为导航元素。我倾向于保持表单及其控件在视觉上与页面上的其他元素分开 - 也许使用 &lt;fieldset&gt;

【讨论】:

    【解决方案4】:

    Firefox/Chrome 如何提交“GET”?有参数吗?如果你想链接到ThisPage.aspx,那就不用按钮就可以了。

    表单可以是 GET 或 POST,但不能同时是两者。因此,如果按钮在表单内,它将始终从表单提交数据,并且应该使用表单上设置的任何方法。

    也许您可以将实际的 HTML 输出而不是 ASP 代码发布到浏览器?我有一种感觉,您可能正在生成一个表单中的表单。在这种情况下,解决方案是尽可能将表单分开。

    【讨论】:

      猜你喜欢
      • 2014-06-23
      • 1970-01-01
      • 1970-01-01
      • 2014-11-30
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多