【问题标题】:Submit HTML form on self page在自己的页面上提交 HTML 表单
【发布时间】:2012-11-11 06:57:36
【问题描述】:

我想要一个 HTML 表单提交给它自己。如何使用action 属性?

  1. <form action="">
  2. <form action="#">
  3. <form action="some/address">
  4. <form>

哪个更好?

【问题讨论】:

标签: html forms http url


【解决方案1】:

使用?:

<form action="?" method="post">

它会将用户返回到同一页面。

【讨论】:

  • 这太棒了!
  • 没那么棒。这将删除当前 URL 的所有查询字符串(如果有)。
  • 我要删除查询字符串:3
【解决方案2】:

在 2013 年,有了所有 HTML5 的东西,你可以省略 'action' 属性来自行提交表单

<form>

实际上,Form Submission subsection of the current HTML5 draft 不允许 action=""(空属性)。这是违反规范的。

来自this other Stack Overflow answer

【讨论】:

  • 我使用了 并得到了 action 不能为空的错误,我想我只是把它关掉
  • 我很困惑。 w3 将action 属性全部省略,但不将其留空是否有效?
  • 那么我需要使用 $_GET 或 $_POST 访问参数吗?
  • @Black 这显然会在方法标签中指定
【解决方案3】:

您可以将操作属性留空。表单将自动在同一页面中提交。

<form action="">

根据w3c specification,action属性一般必须是非空的有效url。也有一些action属性可能为空的情况的解释。

元素的动作是元素的formaction属性的值,如果该元素是一个提交按钮并且具有这样的属性,或者它的表单所有者的action属性的值,如果它有一个,或者是空字符串.

所以它们仍然有效且有效:

<form action="">
<form action="FULL_URL_STRING_OF_CURRENT_PAGE">

如果您确定您的受众正在使用 html5 浏览器,您甚至可以省略 action 属性:

<form>

【讨论】:

  • 你能确认'action'属性可以留空并验证吗?
  • 不验证。 : 元素表单上属性操作的错误值:必须为非空。
  • 根据 HTML5 规范,不允许空字符串作为操作:w3c.github.io/html/sec-forms.html#element-attrdef-form-action
  • 这是唯一对我有用的东西。
    link action 和 formaction 内容属性,如果指定的话,必须有一个有效的非空 URL 值,可能被空格包围......如果它有一个,否则为空字符串。
  • “不验证”的概念是荒谬的,因为唯一可以验证您的 XML 的人就是您。这就是 XML 的意义所在——您说一堆规则,您想为您的 XML 文档保留这些规则,在 DTD 中对它们进行编码,并让 XML 解析器进行看似困难的解析。这就是为什么 XML 在今天仍然很重要的一个原因 - 你可以采用任何你想要的模型,无论是 JSON、文本、csv,编写一个从该格式到 XML 的简单转换器,为该 XML 编写一个 DTD,然后,你跳过需要要编写自己的验证器,XML 已经做到了!
【解决方案4】:

如果您使用 php 提交表单,请务必使用:

action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"

for security.

【讨论】:

    【解决方案5】:

    您可以在操作属性上使用同一页面:action='&lt;yourpage&gt;'

    【讨论】:

      猜你喜欢
      • 2012-08-14
      • 1970-01-01
      • 1970-01-01
      • 2013-09-20
      • 2019-02-10
      • 2015-01-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多