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

时间:2015-01-25 17:00:04

标签: ajax go

我刚刚开始学习Web开发,Go和Ajax,但我很难看到出现了什么问题。我试图简单地在客户端和服务器之间来回发送数据。使用Ajax请求,我将数据从表单发送到服务器,但它似乎没有到达服务器,因为日志不打印“在posthandler”,这导致我认为ajax请求有问题。附件是带有所有相关代码的main.go,index.html和js / getData.js。

main.go

package main

import (
    "fmt"
    "net/http"
    "io/ioutil"
    "log"
)

var INDEX_HTML []byte

func 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")
}

的index.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.js

function 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 个答案:

答案 0 :(得分:-1)

有两件事:

  • 没有处理程序存在以呈现assest(在本例中为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")
}

的index.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>
相关问题