html页面向服务器post数据的两种方式
使用表单
<form method="post" action="http://localhost:9090/LoginCheck">
<input type="text" required="required" placeholder="用户名" name="name"></input>
<input type="password" required="required" placeholder="密码" name="code"></input>
<button class="but" type="submit">登录</button>
</form>
不使用表单
<script src="https://cdn.bootcss.com/jquery/1.12.4/jquery.min.js"></script>
<script type="text/javascript">
function login() {
$.post("http://localhost/login", {"name": "1", "code": "2"}, function(res) { alert("success") }, "json")
}
</script>
<body>
<p id="login">
<h1>Login</h1>
<button onclick="login();">登陆</button>
</p>
</body>
go后台如何处理post数据
package main
import (
// "bytes"
"encoding/json"
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)
func main() {
http.HandleFunc("/LoginCheck", sayHello)
err := http.ListenAndServe(":9090", nil)
if err != nil {
log.Fatal("ListenAndServe: ", err)
}
}
1.
func sayHello(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
if r.Method == "POST" {
fmt.Println("recv form", r.Form)
fmt.Println(r.Form["code"][0])
for k, v := range r.Form {
fmt.Println(k, v)
}
}
2.
func sayHello(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
if r.Method == "POST" {
result, _ := ioutil.ReadAll(r.Body)
r.Body.Close()
var user map[string]interface{}
err := json.Unmarshal(result, &user)
if err == nil {
for kk, vv := range user {
fmt.Println(kk, ":", vv)
}
}
}
3.
func sayHello(w http.ResponseWriter, r *http.Request) {
r.ParseForm()
fmt.Println("recv post")
if r.Method == "POST" {
result, _ := ioutil.ReadAll(r.Body)
r.Body.Close()
var f interface{}
err := json.Unmarshal(result, &f)
if err != nil {
fmt.Println("error: ", err)
}
m := f.(map[string]interface{})
for k, v := range m {
fmt.Println(k, v)
}
}
}