当form的action为空或省略时,表单提交到当前页面URL;action=""、无action属性、action="#"均等效;提交地址由浏览器地址栏URL决定,与HTML文件路径无关;method属性仍生效,空action不阻止HTTP提交。

当 form 的 action 属性为空字符串(action="")或完全省略时,表单会提交到**当前页面的 URL**,也就是浏览器地址栏里显示的那个地址。
空 action="" 等同于不写 action
HTML 规范明确指出:如果 action 属性缺失或值为空字符串,浏览器会使用“当前文档的绝对 URL”作为提交目标。也就是说:
-
→ 提交到当前页 -
(无 action)→ 同样提交到当前页 -
→ 也提交到当前页(#是片段标识符,不影响提交路径)
注意相对路径和当前 URL 的关系
当前页 URL 决定最终提交地址,不是看 HTML 文件位置。例如:
- 你访问的是
https://example.com/path/to/page.html?x=1 - 页面中写
- 提交时实际发往:
https://example.com/path/to/page.html?x=1(完整当前 URL)
即使该页面是通过服务器内部重写(如 PHP 路由、Vue Router history 模式)生成的,只要地址栏显示的是 /user/123,表单就提交到 /user/123。
立即学习“前端免费学习笔记(深入)”;
与 method 属性协同工作
action 空值只影响提交地址,不影响请求方法:
-
method="get"(默认)→ 参数拼在 URL 后,刷新页面可见 -
method="post"→ 数据放在请求体,地址栏不变,但仍是发给当前 URL
常见误操作:以为 action="" 会触发某个 JS 函数或跳过提交——不会。它仍会触发完整 HTTP 提交,除非用 event.preventDefault() 阻止。
什么情况下容易出问题?
以下场景需特别留意空 action 的行为:











