为了账号安全,请及时绑定邮箱和手机立即绑定

GoLang/Javascript:在 JSON POST 上清空 postForm

GoLang/Javascript:在 JSON POST 上清空 postForm

Go
芜湖不芜 2021-12-27 15:27:15
我正在尝试将 JSON 数据从 javascript 页面 POST 到 golang 服务器,但我无法在两端使用 SO 接受的答案找到任何 JSON 数据的痕迹。这篇文章展示了我在 Javascript 中发布我的 JSON的方式,这篇文章展示了我尝试在 Go 中处理这个 JSON 的方式。//js json post sendvar request = new XMLHttpRequest();request.open('POST', 'http://localhost:8080/aardvark/posts', true);request.setRequestHeader('Content-Type', 'application/json; charset=UTF-8');var data = {hat: "fez"};request.send(JSON.stringify(data));//Go json post responsefunc reply(w http.ResponseWriter, r *http.Request) {    w.Header().Set("Access-Control-Allow-Origin", "*")    w.Header().Set("Access-Control-Allow-Credentials", "true")    w.Header().Set("Access-Control-Allow-Headers", "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin, Cache-Control, X-Requested-With")    w.Header().Set("Access-Control-Allow-Methods", "POST, OPTIONS, GET, PUT")    if err := r.ParseForm(); err != nil {        fmt.Println(err);    }    //this is my first impulse.  It makes the most sense to me.    fmt.Println(r.PostForm);          //out -> `map[]`  would be `map[string]string` I think    fmt.Println(r.PostForm["hat"]);   //out -> `[]`  would be `fez` or `["fez"]`    fmt.Println(r.Body);              //out -> `&{0xc82000e780 <nil> <nil> false true {0 0} false false false}`    type Hat struct {        hat string    }    //this is the way the linked SO post above said should work.  I don't see how the r.Body could be decoded.    decoder := json.NewDecoder(r.Body)    var t Hat       err := decoder.Decode(&t)    if err != nil {        fmt.Println(err);    }    fmt.Println(t);                  //out -> `{ }`}我不确定从这里还可以尝试什么。我应该改变什么才能使这项工作?
查看完整描述

1 回答

?
九州编程

TA贡献1785条经验 获得超4个赞

导出hat结构Hat和 json 解码的字段将起作用。


type Hat struct {

    Hat string // Exported field names begins with capital letters

}


查看完整回答
反对 回复 2021-12-27
  • 1 回答
  • 0 关注
  • 167 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信