前端兩組碼:
1. name="hobby" // 不帶 []
2. name="hobby[]" // 帶 []
| 後端語言/框架 | name="hobby" | name="hobby[]" |
|---|---|---|
| PHP | 僅取得**最後一個**勾選值 (字串) | 自動轉為 **陣列** $_POST['hobby'] = ['a','b'] |
| Java Servlet | request.getParameter("hobby") 取第一個;getParameterValues("hobby") 取陣列 | 同不帶 [],getParameterValues 均可取陣列 |
| ASP.NET Core | 模型繫結需 List<string> Hobby 才能收陣列 | 同不帶 [],慣例加 [] 提醒前端這是多選 |
| Node.js (Express + body-parser) | 單值或陣列視勾選數量而定 (不穩定) | 強制解析為陣列 (穩定) |
[]**,明確語意「這是多選陣列」,前後端溝通零歧義。getParameterValues / List<string> / request.body.hobby (陣列) 接收。[]**,語意互斥。加 [] 是「約定優於配置」的典型應用,減少溝通成本與 Bug。