在自己的页面上提交 HTML 表单

Posted

技术标签:

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

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

    <form action=""> <form action="#"> <form action="some/address"> <form>

哪个更好?

【问题讨论】:

我希望你已经看到这个帖子***.com/questions/1131781/… 您的文档的 是什么?它将帮助您回答。 只是简单的不使用动作属性 【参考方案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;'

【讨论】:

以上是关于在自己的页面上提交 HTML 表单的主要内容,如果未能解决你的问题,请参考以下文章

java web 如何防止 用户绕过js验证,直接地址栏提交表单或自己编写html页面,提交数据到服务器?

php 在自己本身的页面如何防止重复提交的

如何制作提交给自己的 PHP 表单?

C# 模拟 post提交php页面的表单

在DW中制作一个表单后如何使表单内容提交到指定页面?

表单提交后数据库插入数据出现乱码怎么解决