首页 > 解决方案 > 使用 Golang 和 Bootstrap 时,表单数据始终为空

问题描述

所以我试图使用引导程序创建一个表单并在 golang 中解析它,但表单数据一直是空的。

戈朗:

   // CreateEmployee - handler function for creating a new employee
func CreateEmployee(w http.ResponseWriter, r *http.Request) {
    err := r.ParseForm()
    if err != nil {
        fmt.Println(err.Error())
    }
    fmt.Println(r.Form)
}

引导形式:

<html>
<head>
<title></title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-beta/css/bootstrap.min.css" integrity="sha384-/Y6pD6FV/Vv2HJnA6t+vslU6fwYXjCFtcEpHbNJ0lyAFsXTsjBbfaDjzALeQsN6M" crossorigin="anonymous">
</head>
<body>
    <form action="/employee" method="post">
        <div class="form-group">
            <label>Name</label>
            <input type="text" id="name" class="form-control" placeholder="Enter name">
        </div>
        <div class="form-group">
            <label>Title</label>
            <input type="text" id="title" class="form-control" placeholder="Enter title">
        </div>
        <div class="form-group">
            <label>Email</label>
            <input type="email" id="email" class="form-control" placeholder="Enter email">
        </div>
        <div class="form-group">
            <label>Photo</label>
            <input type="text" id="photo" class="form-control" placeholder="Enter photo 
             location">
        </div>
        <div class="form-group">
            <label>Phonetic</label>
            <input type="text" id="phonetic" class="form-control" placeholder="Enter 
              phonetic pronunciation">
        </div>
        <button type="submit" class="btn btn-primary">Submit</button>
      </form>
</body>

我知道您必须在填充 r.Form 之前调用 ParseForm,但据我所知,这就是所需的全部。

该路线运行良好,因为当我提交表单时,它正在将空地图打印到控制台。似乎我在做一些愚蠢的事情,但无法弄清楚。

标签: go

解决方案


元素中 缺少name<input>属性。如果 name 属性未设置或为空,则输入值不包含在提交的表单中。

像这样修复:

    <div class="form-group">
        <label>Name</label>
        <input type="text" name="name" id="name" class="form-control" placeholder="Enter name">
    </div>

...对于其他输入元素,依此类推。


推荐阅读