html与go的一点记录

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)
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值