2012-12-08 10 views
11

पर पोस्ट सरणी खाली मैं एक साधारण HTML फॉर्म को संसाधित करने की कोशिश कर रहा हूं। हालांकि, मैं जमा करने पर कोई पोस्ट डेटा प्राप्त करने में असमर्थ हूं। आर। फार्म मानचित्र हमेशा [] है। पता नहीं मैं कहाँ गलत हो रहा हूँ।अनुरोध। फॉर्म सबमिशन

अग्रिम धन्यवाद।

यहाँ कोड http://play.golang.org/p/aZxPCcRAVV

package main 

import (
    "html/template" 
    "log" 
    "net/http" 
) 

func rootHandler(w http.ResponseWriter, r *http.Request) { 
    t, _ := template.New("form.html").Parse(form) 
    t.Execute(w, "") 
} 

func formHandler(w http.ResponseWriter, r *http.Request) { 
    log.Println(r.Form) 
    rootHandler(w, r) 
} 

func main() { 
    http.HandleFunc("/", rootHandler) 
    http.HandleFunc("/login", formHandler) 
    http.ListenAndServe("127.0.0.1:9999", nil) 
} 

var form = ` 
<h1>Login</h1> 
<form action="/login" method="POST"> 
<div><input name="username" type="text"></div> 
<div><input type="submit" value="Save"></div> 
</form> 
` 

उत्तर

11

ऐसा लगता है कि ParseForm पहले कॉल करने की आवश्यकता है। गो डॉक्स

// Form contains the parsed form data, including both the URL 
// field's query parameters and the POST or PUT form data. 
// This field is only available after ParseForm is called. 
// The HTTP client ignores Form and uses Body instead. 
Form url.Values 

और कुछ उदाहरण आपके उदाहरण को काम करने के लिए।

func formHandler(w http.ResponseWriter, r *http.Request) { 
    err := r.ParseForm() 
    if err != nil { 
     //handle error http.Error() for example 
     return 
    } 
    log.Println(r.Form) 
    rootHandler(w, r) 
} 
+0

धन्यवाद! मैं लेखन वेब अनुप्रयोग लेख [http://golang.org/doc/articles/wiki/#tmp_8 ](http://golang.org/doc/articles/wiki/#tmp_8) का पालन कर रहा था। यह शायद थोड़ा सा दिनांकित है और ParseForm() का उल्लेख नहीं करता है। – rputikar

+1

वह उदाहरण FormValue विधि का उपयोग करता है जो इसकी आवश्यकता होने पर ParseForm को कॉल करेगा। आप सीधे फॉर्म चर का उपयोग कर रहे हैं ताकि आपको सीधे ParseForm को कॉल करना होगा। – masebase

संबंधित मुद्दे