Pytanie Jak uzyskać wartość prośby o wysłanie ajax'a w Go lang?


Pracuję w Go. Poniższy kod do obsługi żądania klienta.

package main

import (
    "net/http"
    "fmt"
 )

func main() {
  http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
    fmt.Fprintf(w, "<html><head><script>function createGroup(){var xmlhttp,number = document.getElementById('phoneNumber').value,email = document.getElementById('emailId').value; var values = {}; values.number = phoneNumber; values.email= emailId; if (window.XMLHttpRequest){xmlhttp=new XMLHttpRequest();}else{xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');}xmlhttp.open('POST','createGroup',true);xmlhttp.send(values.toString());}</script></head><body><h1>Group</h1><input type='text' name='phoneNumber' id='phoneNumber'/><input type='email' id='emailId' name='emailId'/><button onClick='createGroup()'>Create Group</button></body></html>")
 })
 http.HandleFunc("/createGroup",func(w http.ResponseWriter, r *http.Request) {
    fmt.Println(r)
    //Try to get the user information
 })
 panic(http.ListenAndServe(":8080", nil))
}

Uwaga

Client: Zawiera dwa pola tekstowe, aby uzyskać phone number, email i createGroup przycisk.

  1. Jeśli użytkownik kliknie przycisk createGroup, Post prośba o /createGroup jest wyzwalane przy użyciu ajax.

  2. żądanie createGroup jest obsługiwane na serwerze (Go)

Problem

Jak uzyskać numer telefonu i adres e-mail po stronie serwera?

Wydrukowałem wniosek w /createGroup program obsługi, ale brakuje wartości.

Output: &{POST /createGroup HTTP/1.1 1 1 map[Accept:[text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8] Accept-Encoding:[gzip, deflate] Content-Length:[15] Content-Type:[text/plain; charset=UTF-8] Connection:[keep-alive] Pragma:[no-cache] Cache-Control:[no-cache] User-Agent:[Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:25.0) Gecko/20100101 Firefox/25.0] Accept-Language:[en-US,en;q=0.5] Referer:[http://localhost:8080/]] 0xc200099ac0 15 [] false localhost:8080 map[] map[] <nil> map[] 127.0.0.1:59523 /createGroup <nil>}

Każda pomoc będzie wdzięczna.


14
2018-04-21 12:12


pochodzenie


Czy możesz sformatować html w przykładzie? - pratsJ


Odpowiedzi:


Posługiwać się ParseForm i r.FormValue, na przykład :

http.HandleFunc("/createGroup",func(w http.ResponseWriter, r *http.Request) {
    r.ParseForm()
    fmt.Println(r.Form)
    fmt.Println(r.FormValue("email"))
})

23
2018-04-21 13:04



+1 Dzięki, że działa, Note: W interfejsie używam wysyłania formularzy zamiast ajax. - karthick