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


103

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

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

哪个更好?


1
我希望你看到这篇文章stackoverflow.com/questions/1131781/...
Tariqulazam

您的文档的<doctype>是什么?这将有助于回答您。
米歇尔·帕特恩

只是简单的不使用动作属性附加伤害
Milche百通

Answers:


124

在2013年,使用所有HTML5内容,您只需忽略'action'属性即可自行提交表单

<form>

实际上,当前HTML5草案的“ 表单提交”小节不允许action =“”(空属性)。这违反规范。

另一个堆栈溢出答案


1
我使用了<?php $ _PHP_SELF?>并收到错误消息,提示操作不能为空,我想请病就好了
Drewdin

2
我很困惑。完全忽略该action属性,但不保留为空是否有效?
马丁马丁

我需要使用$ _GET或$ _POST访问参数吗?
黑色

21

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

<form action="">

根据w3c规范,action属性通常必须是非空的有效url。对于在某些情况下动作属性可能保留为空的说明。

如果元素是“提交按钮”并且具有这样的属性,则元素的动作是元素的formaction属性的值;如果元素是一个,则其行为是其表单所有者的action属性的值,否则为空字符串。

因此它们仍然有效并起作用:

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

如果您确定受众群体使用的是html5浏览器,则甚至可以忽略action属性:

<form>

您可以确认可以将'action'属性保留为空并进行验证吗?
米歇尔·帕特恩

4
不验证。:元素形式上的属性操作的错误值:必须为非空。
Azd325

2
根据HTML5规范,不允许将空字符串作为操作:w3c.github.io/html/sec-forms.html#element-attrdef-form-action
Thomas

1
这是唯一对我有用的东西。<br/> 链接 action和formaction内容属性(如果已指定)必须具有一个值,该值是一个有效的非空URL,可能用空格包围....如果有一个,否则为空字符串。
JoelBondurant

“不验证”的概念是荒谬的,因为唯一可以验证您的XML的人就是您。这就是XML的要点-您说了一堆要对XML文档适用的规则,将它们编码为DTD,然后让XML解析器进行难以理解的解析。这就是XML在今天仍然很重要的原因-您可以采用所需的任何模型,例如JSON,文本,csv,从该格式到XML编写一个简单的转换器,为该XML编写DTD和bam,而无需要编写您自己的验证器,XML已经做到了!
德米特里(Dmitry)

21

用途?

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

它将把用户发送回同一页面。


这太棒了!
beppe9000 '19

3
不太好 如果有的话,这将删除当前URL的所有查询字符串。
OMA

1
我想删除查询字符串:3
VoidZA

12

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

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

为了安全。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.