2017-07-26 26 views
2

因此我们知道用于将表单数据发送到Web服务器的action属性。为什么没有动作的表单标签重新加载页面?

但我有几个问题:

  • 如果未设置action属性,为什么它在默认情况下重新加载页面?
  • 不应该是默认行为,不重新加载页面,如果它没有设置?
  • 如果有规范要涵盖这种情况?
  • 在这个时代,在javascript中,我们使用了很多使用SPA的异步服务器调用,以及其他技术,是否有计划在未来改变这一点?

回答

4

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调用。

无效值默认这些属性(methodformmethod)是GET状态。 缺失值默认method属性也是GET状态。

因此,如果您不指定任何一个属性,则默认为对当前所在的页面进行HTTP GET调用。您应该在URL中查看任何表单元素的名称和值作为查询字符串参数。

据我所知,目前还没有计划改变这些默认设置,因为它会打破互联网上的大量表单。

+0

很好的解释!非常感谢,我不认为他们会违反标准,但添加像'async'这样的属性,因为他们一直在用其他元素来改进HTML和Javascript的使用。 – JoseAPL

+0

没有改变默认值的计划,因为表单的主要功能是提交您的输入字段。如果你不想或计划提交它,你大多不需要表单元素。 – Stephan

+0

我不认为其意图是不提交数据,@Stephan,而是通过ajax或除标准方法外的其他机制提交。 –

2

表单的action属性定义表单数据应该发布到哪个位置,默认值是当前位置。所以在你的情况下,表单会为当前页面生成一个GET操作,你可能不会在你的服务器上处理这个页面,因此它只是再次返回页面。

如果您使用JavaScript来处理您的数据和AJAX请求来发布它,那么您甚至可能甚至不需要使用表单。如果您想使用表单而不重新加载页面,则必须在表单的提交处理程序中调用event.preventDefault();

+0

默认操作是'GET'! – JoseAPL

+1

不,这个动作就是网址,因此按照斯蒂芬所说的默认目前的网址,这个方法可能会默认获得。无论哪种方式,表单都会发布或获取您当前的网址。导致重新加载。 –

+0

谢谢,何塞,纠正它。 – Stephan

相关问题