get
查询、搜索;表单字段放入 URL 查询部分。省略 method 时默认使用 get。
action 指定交到哪里,method 指定提交方式。HTTP 方法不止 GET、POST,但不能全部直接写进 form 的 method。
查询、搜索;表单字段放入 URL 查询部分。省略 method 时默认使用 get。
提交需要处理的数据,例如报名;表单字段放入请求体。服务器仍需提供处理程序。
dialog 意为“对话框”。method="dialog" 不是把数据交给服务器,而是让对话框内的表单在提交时关闭所属对话框。
<dialog> 是 HTML 的对话框元素,可显示一块临时弹出的内容;method="dialog" 则是其内部 form 的特殊提交方式。两者不是同一件事。
例如,点击“查看报名说明”打开弹窗,读完后点击“我知道了”关闭。这个操作只是确认已读,不需要向服务器发送表单数据,也不代表报名成功。
<button type="button"
onclick="document.getElementById('notice').showModal()">
查看报名说明
</button>
<dialog id="notice">
<form method="dialog">
<p>请按所选场次参加黄梅戏体验活动。</p>
<button type="submit" value="read">我知道了</button>
</form>
</dialog>
showModal() 打开对话框,并暂时阻止操作同一文档中对话框以外的内容。method="dialog",提交时关闭对话框,不发送 GET 或 POST 请求,action 在此模式下不起作用。value="read" 会成为对话框的 returnValue,供脚本判断关闭时选择了什么;不是发送给服务器的字段。这里的 form 必须放在 dialog 内。若表单含 required 等约束,普通提交仍需通过校验才能关闭。
| 比较 | GET | POST |
|---|---|---|
| 常见用途 | 查询、筛选等读取操作 | 报名、创建记录等提交操作 |
| 典型字段位置 | URL的查询部分,例如 ?session=morning | 请求体中 |
| 敏感信息 | 不应放入URL,可能被历史、日志等记录 | 不等于加密;仍需HTTPS及服务端保护 |
<form action="/signup" method="post">
<input name="session" value="morning" type="hidden">
<button type="submit">报名</button>
</form>
hidden是隐藏控件,不是保密控件。静态课件没有/signup处理程序;演示不发送真实报名。文件上传通常还要设置 enctype="multipart/form-data",本次不要求上传文件。
| 方法 | 含义 | 场景示例 |
|---|---|---|
| GET | 获取资源 | 查询活动或报名记录。 |
| POST | 提交数据供服务器处理 | 提交一条报名申请,不仅限于创建记录。 |
| PUT | 按请求内容创建或整体替换指定资源 | 向指定记录地址提交完整的新内容。 |
| PATCH | 对资源作部分修改 | 只修改报名记录中的场次。 |
| DELETE | 请求删除指定资源 | 请求删除一条报名记录;仍需权限检查。 |
| HEAD | 类似 GET,但响应不包含正文 | 获取文件类型、大小等响应头信息。 |
| OPTIONS | 询问通信选项 | 浏览器的跨域预检可能使用它。 |
| CONNECT | 建立到目标的隧道 | 代理连接场景,普通表单不使用。 |
| TRACE | 请求回显接收到的请求,用于诊断 | 网络诊断场景,普通表单不使用。 |
不要写 <form method="delete"> 来删除记录:它不是合法的原生表单 method 值,浏览器会按默认 get 处理。PUT、PATCH、DELETE 等通常由 JavaScript 的 fetch 等请求方式配合服务器接口使用;不是写出方法名就能完成操作。
参考:MDN · HTTP 请求方法
https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods
表单属性:MDN · form 的 method
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/form#method