问下 这段代码什么问题呢

hellsam · 2017-09-04 09:29:51 · 1152 次点击 · 大约8小时之前 开始浏览    置顶
这是一个创建于 2017-09-04 09:29:51 的主题,其中的信息可能已经有所发展或是发生改变。

QQ图片20170904172846.png

按理说 用r.method =="get" 的时候 表单传过来才会触发他,然后返回值, 否则非表单的时候 显示 HTML


有疑问加站长微信联系(非本文作者)

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

1152 次点击  
加入收藏 微博
4 回复  |  直到 2017-09-04 10:03:12
channel
channel · #1 · 8年之前

大哥,谁说表单传过来应该是 GET?GET 和 POST 啥区别,先弄懂这个吧!

hellsam
hellsam · #2 · 8年之前

@channel 应该怎么解决呢

我在.net中 一般用于 if (HttpContext.Current.Request.HttpMethod == "POST") 这个来检测是否POST还是什么 如果非POST就得到模板 因为我习惯把 获取模板和POST GET等放在一个函数中, 所以需要判断检测POST GET 否则获取模板

channel
channel · #3 · 8年之前

那你这里也用这种方式啊,为啥到了 Go 里面,就变成和 get 比较,而不是 POST,还用小写的 get …… 为啥呢?

shouge
shouge · #4 · 8年之前
package main

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

type ContactDetails struct {
    Email string
    Subject string
    Message string
}

func main() {
    tmpl := template.Must(template.ParseFiles("forms.html"))

    http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {
        if r.Method != http.MethodPost {
            tmpl.Execute(w, nil)
            return
        }
        details := ContactDetails{
            Email: r.FormValue("email"),
            Subject: r.FormValue("subject"),
            Message: r.FormValue("message"),
        }
        _ = details
        tmpl.Execute(w, struct{Success bool}{true})
        })

    http.ListenAndServe(":8080", nil)

}

我觉得你可以参考一下这个~~~

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传