因此我们知道用于将表单数据发送到Web服务器的action
属性。为什么没有动作的表单标签重新加载页面?
但我有几个问题:
- 如果未设置
action
属性,为什么它在默认情况下重新加载页面? - 不应该是默认行为,不重新加载页面,如果它没有设置?
- 如果有规范要涵盖这种情况?
- 在这个时代,在javascript中,我们使用了很多使用SPA的异步服务器调用,以及其他技术,是否有计划在未来改变这一点?
因此我们知道用于将表单数据发送到Web服务器的action
属性。为什么没有动作的表单标签重新加载页面?
但我有几个问题:
action
属性,为什么它在默认情况下重新加载页面?form
标记始终是要将表单提交给服务器,并且action
属性的原始定义反映了这一点。
该程序将处理完成和提交的表单(
action
属性)。
action
attribute was actually a required attribute in HTML 4因此如果未指定,则无效。
在HTML5这不是必需的,但默认为当前页面的URL。
的
action
IDL属性必须reflect同名的内容属性,但在获取时,在内容属性丢失或它的值是空字符串,the document's address必须改为返回。
method
属性控制如何调用action
属性。它的默认值是GET
,这意味着将进行HTTP调用。
的无效值默认这些属性(编的
method
和formmethod
)是GET状态。 缺失值默认为method
属性也是GET状态。
因此,如果您不指定任何一个属性,则默认为对当前所在的页面进行HTTP GET调用。您应该在URL中查看任何表单元素的名称和值作为查询字符串参数。
据我所知,目前还没有计划改变这些默认设置,因为它会打破互联网上的大量表单。
表单的action属性定义表单数据应该发布到哪个位置,默认值是当前位置。所以在你的情况下,表单会为当前页面生成一个GET操作,你可能不会在你的服务器上处理这个页面,因此它只是再次返回页面。
如果您使用JavaScript来处理您的数据和AJAX请求来发布它,那么您甚至可能甚至不需要使用表单。如果您想使用表单而不重新加载页面,则必须在表单的提交处理程序中调用event.preventDefault();
。
很好的解释!非常感谢,我不认为他们会违反标准,但添加像'async'这样的属性,因为他们一直在用其他元素来改进HTML和Javascript的使用。 – JoseAPL
没有改变默认值的计划,因为表单的主要功能是提交您的输入字段。如果你不想或计划提交它,你大多不需要表单元素。 – Stephan
我不认为其意图是不提交数据,@Stephan,而是通过ajax或除标准方法外的其他机制提交。 –