为什么没有操作的表单标记会重新加载页面?

时间:2017-07-26 21:30:30

标签: javascript html html5 forms

因此我们知道用于将表单数据发送到Web服务器的action属性。

但我有几个问题:

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

2 个答案:

答案 0 :(得分:4)

form标记始终是将表单提交给服务器,action属性的原始定义反映了这一点。

  

将处理已完成和提交的表单(action属性)的程序。

action attribute was actually a required attribute in HTML 4因此如果未指定则无效。

HTML5中,它不是必需的,但默认为当前页面的网址。

  

action IDL属性必须reflect具有相同名称的内容属性,但获取时除外,当缺少内容属性或其值为空字符串时,the document's address必须而是返回。

method属性控制如何调用action属性。其默认值为GET,表示将进行HTTP调用。

  

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

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

据我所知,没有计划更改这些默认值,因为它会破坏互联网上的大量表格。

答案 1 :(得分:2)

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

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