少しバックグラウンドになる前は、プログラミング言語を使うのはとても新しいです。私はWindows用の最新のgoパッケージインストーラーであるWin7でgoを実行しています。私はコーディングが苦手ですが、新しい言語を学ぶという挑戦は好きです。Erlangを学び始めたかったのですが、YouTubeのGO I / Oビデオに基づいて、非常に興味深いことがわかりました。
GOでPOSTフォーム値をキャプチャする際に問題が発生しました。昨日、ブラウザでPOSTフォームの値を印刷するために3時間費やしましたが、惨めに失敗しました。何が間違っているのかわかりませんが、誰かが私を正しい方向に向けることができますか?これは、C#、PHP、VB、ASP、Railsなどの別の言語で簡単に実行できます。インターウェブ全体を検索しましたが、動作するサンプルが見つかりませんでした。以下は私のサンプルコードです。
これがIndex.htmlページです
{{ define "title" }}Homepage{{ end }}
{{ define "content" }}
<h1>My Homepage</h1>
<p>Hello, and welcome to my homepage!</p>
<form method="POST" action="/">
<p> Enter your name : <input type="text" name="username"> </P>
<p> <button>Go</button>
</form>
<br /><br />
{{ end }}
これがベースページです
<!DOCTYPE html>
<html lang="en">
<head>
<title>{{ template "title" . }}</title>
</head>
<body>
<section id="contents">
{{ template "content" . }}
</section>
<footer id="footer">
My homepage 2012 copy
</footer>
</body>
</html>
今いくつかのgoコード
package main
import (
"fmt"
"http"
"strings"
"html/template"
)
var index = template.Must(template.ParseFiles(
"templates/_base.html",
"templates/index.html",
))
func GeneralHandler(w http.ResponseWriter, r *http.Request) {
index.Execute(w, nil)
if r.Method == "POST" {
a := r.FormValue("username")
fmt.Fprintf(w, "hi %s!",a); //<-- this variable does not rendered in the browser!!!
}
}
func helloHandler(w http.ResponseWriter, r *http.Request) {
remPartOfURL := r.URL.Path[len("/hello/"):]
fmt.Fprintf(w, "Hello %s!", remPartOfURL)
}
func main() {
http.HandleFunc("/", GeneralHandler)
http.HandleFunc("/hello/", helloHandler)
http.ListenAndServe("localhost:81", nil)
}
ありがとう!
PS:特にコピー貼り付けの場合、stackoverflowのコードのすべての行の前に4つのスペースを追加するのは非常に面倒です。それは非常にユーザーフレンドリーであるとは思いませんでしたか、それとももっと簡単な方法がありますか?