【问题标题】:Why does <a> exist, rather than a form submission of method type get?为什么存在<a>,而不是方法类型get的表单提交?
【发布时间】:2010-11-09 18:35:32
【问题描述】:

我只是很好奇,为什么 HTML 有一个锚标记用于执行 GET 请求,具体无法更改 HTTP 请求类型,或者为什么不使用表单提交约定,因为我们可能有 get-无论如何都是变量。

更有趣的是锚标签如何链接到同一页面的#id 部分。

是否有充分的理由,或者这只是教条的残余?

编辑:我不是在问他们做什么,我是在质疑锚标签和表单提交的约定。

为什么它不是一个涵盖这些基础的 HTTP 请求元素,并且默认为 GET,所以它可以与链接一起使用?为什么要决定这个大会。我是说这对我来说听起来很疯狂,我想知道从做出决定时是否有任何理由。

【问题讨论】:

    标签: html http history


    【解决方案1】:

    锚点连接两个文档或文档的一部分,即当前和引用。但表格没有。表单用于发送查询。就是这样。

    【讨论】:

    • 那为什么我们在 HTTP 请求中允许 GET 变量呢?
    【解决方案2】:

    &lt;a&gt; 标签用于从一个页面导航到另一个页面,它只需要 GET 请求。由于 URL 支持发送变量的可能性(例如?a=b),因此绝对不需要更复杂的标签。

    很明显,&lt;a&gt; 标签是一个内联元素,而&lt;form&gt; 标签是一个块元素。所以你可以得出结论,锚标签需要简单,而表单元素可能更复杂一些。

    【讨论】:

    • 对,但是返回码和内容不依赖于使用的请求方法。例如,您可以轻松地让一个资源返回两个具有不同请求方法的结果。 A 标记并不是真正的内联标记,因为您需要定义 inner-html,这最终可能会将事物变成一个块,而不管浏览器没有与它绑定任何输入元素的事实。我可以很容易地创建一个可以执行 &lt;form method="get" action="example.com"&gt;&lt;input type="hidden" name="arg" value="1"&gt;&lt;input type="submit"&gt;Go there&lt;/submit&gt;&lt;/form&gt; 的 hyperling
    • 等于`点击这里,但约定似乎很奇怪
    【解决方案3】:

    使用 get 更容易,因为您可以使用一个字符串执行整个操作,而无需额外的标签。它简短而简单,对于大多数参数传递和导航应用程序来说都是完美的。

    POST 用于表单和文件附件。 GET 有大小限制,POST 没有。

    更有趣的是锚标签如何 链接到同一页面的#id 部分。

    是否有充分的理由,或者这是 只是教条的剩菜?

    不,哈希 URL 仍然有用,并且是页面内导航的非 JavaScript 后备方案。为了维护基于 AJAX 的页面的状态和书签,哈希 URL 现在被提升到一个新的水平。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-12-31
      • 1970-01-01
      • 2016-12-08
      • 1970-01-01
      • 2011-05-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多