【发布时间】:2017-04-25 20:48:36
【问题描述】:
我编写简单的 Go 网络应用程序。在这个应用程序中,我发送 ajax 发布请求并返回简单的“hello world!”字符串并在控制台中打印,但有些奇怪。控制台输出中有三个响应值。一个为空值,两个响应为“hello world!”字符串值。我的代码有什么问题?
Golang 代码:
package main
import (
"io"
"net/http"
"html/template"
)
func main() {
http.HandleFunc("/ajax", ajaxHandler)
http.HandleFunc("/script.js", srcHandler)
http.HandleFunc("/", mainHandler)
http.ListenAndServe(":8080", nil)
}
func mainHandler(w http.ResponseWriter, r *http.Request) {
t, err := template.ParseFiles("home.html")
if err != nil {
http.Error(w, http.StatusText(500), 500)
return
}
err = t.Execute(w, nil)
if err != nil {
http.Error(w, http.StatusText(500), 500)
return
}
}
func srcHandler(w http.ResponseWriter, r *http.Request) {
http.ServeFile(w, r, "script.js")
}
func ajaxHandler(w http.ResponseWriter, r *http.Request) {
io.WriteString(w, "Hello World!")
}
Javascript 代码:
(function () {
window.onclick = function () {
var req = new XMLHttpRequest();
req.open("post", "/ajax", true);
req.send();
req.onreadystatechange = function () {
console.log(req.responseText);
}
};
}());
【问题讨论】:
-
Go 代码看起来没问题,因此您的问题可能出在未列出的客户端代码中。
-
你确定第一个输出字符串来自那个端点吗?显示网络标签截图和你对应的js代码。
标签: go