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

Ajax 请求不发送到 Go Web 服务器

Ajax 请求不发送到 Go Web 服务器

Go
慕后森 2021-09-13 10:41:33
我刚刚开始学习 Web 开发、Go 和 Ajax,但我无法看出哪里出了问题。我试图简单地在客户端和服务器之间来回发送数据。对于 Ajax 请求,我将数据从表单发送到服务器,但它似乎没有到达服务器,因为日志没有打印“在 posthandler”,这让我认为 ajax 请求有问题。附件是 main.go、index.html 和 js/getData.js 以及所有相关代码。main.gopackage mainimport (    "fmt"    "net/http"    "io/ioutil"    "log")var INDEX_HTML []bytefunc main(){    fmt.Println("starting server on http://localhost:8888/\nvalue is %s", value)    http.HandleFunc("/", IndexHandler)    http.HandleFunc("/post", PostHandler)    http.ListenAndServe(":8888", nil)}func IndexHandler(w http.ResponseWriter, r *http.Request){    log.Println("GET /")    w.Write(INDEX_HTML)}func PostHandler(w http.ResponseWriter, r *http.Request){    r.ParseForm()    log.Println("in posthandler", r.Form)    var value = r.FormValue("textfield")    w.Write([]byte(value))}func init(){    INDEX_HTML, _ = ioutil.ReadFile("./html/index.html")}索引.html<!doctype html><html>  <head>    <title>Page Title</title>  <script src="js/getData.js"></script>  </head>  <body>    <form action="/post" method="post">      <textarea type="text" name="input" id="textfield"></textarea>      <br />      <input type="submit" name="button" id="button" value="Send" onclick="loadXMLDoc()"/>    </form>    <div id="fromserver">    </div>  </body></html>js/getData.jsfunction loadXMLDoc() {    var xmlhttp;    xmlhttp=new XMLHttpRequest();    xmlhttp.onreadystatechange=function()    {    if (xmlhttp.readyState==4 && xmlhttp.status==200)    {        document.getElementById("fromserver").innerHTML=xmlhttp.responseText;    }    }    xmlhttp.open("POST","post",true);    xmlhttp.send();}
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

有两件事:


没有处理程序呈现资源(在本例中为 js/ .)

由于“提交”HTML 元素,表单本身被提交。

这是您更新的代码


main.go


package main


import (

    "fmt"

    "io/ioutil"

    "log"

    "net/http"

)


var INDEX_HTML []byte


func main() {

    fmt.Println("starting server on http://localhost:8888/\nvalue is %s", "asdf")

    http.HandleFunc("/", IndexHandler)

    http.HandleFunc("/post", PostHandler)

    serveSingle("/js/getData.js", "./js/getData.js")

    http.ListenAndServe(":8888", nil)

}


func serveSingle(pattern string, filename string) {

    http.HandleFunc(pattern, func(w http.ResponseWriter, r *http.Request) {

        http.ServeFile(w, r, filename)

    })

}


func IndexHandler(w http.ResponseWriter, r *http.Request) {

    log.Println("GET /")

    w.Write(INDEX_HTML)

}


func PostHandler(w http.ResponseWriter, r *http.Request) {

    r.ParseForm()

    log.Println("in posthandler", r.Form)

    var value = r.FormValue("textfield")

    w.Write([]byte(value))

}

func init() {

    INDEX_HTML, _ = ioutil.ReadFile("./html/index.html")

}

索引.html


<!doctype html>

<html>

  <head>

    <title>Page Title</title>

  <script src="js/getData.js"></script>

  </head>

  <body>

    <form action="/post" method="post">

      <textarea type="text" name="input" id="textfield"></textarea>

      <br />

      <input type="button" name="button" id="button" value="Send" onclick="loadXMLDoc()"/>

    </form>

    <div id="fromserver">

    </div>

  </body>

</html>


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

添加回答

举报

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