whatarethose.go file
func main() {
http.HandleFunc("/", handler)
http.ListenAndServe(":8080", nil)
}
func handler(w http.ResponseWriter, r *http.Request) {
// request switch
switch r.Method {
case "GET":
fmt.Println("GET")
http.ServeFile(w, r, "whatarethose.html")
case "POST":
// send name and value to html
t, err := template.ParseFiles("whatarethose.html")
if err != nil {
fmt.Println(err)
}
items := struct {
Name string
Value float64
}{
Name: "hi",
Value: 0.1,
}
t.Execute(w, items)
}
}
whatarethose.html file
<form name="predict" method="POST" action="/" target="hiddenFrame">
<div class="row half">
<div class="6u">
<input type="text" id="url" class="text" name="url" placeholder="URL"></textarea>
</div>
</div>
<div class="row">
<div class="12u">
<button id="submit" class="button">Submit</button>
</div>
</div>
</form>
<br></br>
<div id="result">
<img id="loader" style="display:none" src="/images/load.gif"></div>
<div id="res">
<p id="info">{{.Name}}<br>{{.Value}}</p>
<img id="demo" src="">
</div>
</div>
Above, some skeleton code from my project. I have a form on my web page which makes a POST request on submit. In my go code, I am trying to pass the response from an API call as a struct back to the html page to display here: <p id="info">{{.Name}}<br>{{.Value}}</p>
. The only thing that displays are the literal strings {{.Name}}
and {{.Value}}
. However, when I move my template code in my go file to or before the GET case, it works with any value, but I don’t have the values returned from the API call, so I need to have the template code in my POST case but it’s not working. I’d really appreciate it if someone could tell me why this is and how I could go about resolving it? Thank you.